Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
p6iobuffer.h
Go to the documentation of this file.
1 
14 #ifndef P6IOBUFFER_H__
15 #define P6IOBUFFER_H__ 1
16 
17 #include "p6err.h" // Error and type definitions
18 #include "p6comdef.h" // [p6]COM definitions
19 #include "p6errorinfo.h" // Definition only, not supported by p6Loader
20 #include "p6runtimeapi.h" // Platform runtime API definitions
21 #include "p6comhlpr.h" // [p6]COM helper macros
22 
23 
24 #ifdef __cplusplus
25 namespace P6R {
26 extern "C" {
27 #endif
28 
29  #undef INTERFACE
30  #define INTERFACE p6IIoBuffer
32  {
34 
45  P6DECLCOMMETHOD(getUsed)(P6THIS_ P6UINT32 *pcBytesInUse) P6PURE;
46 
55  P6DECLCOMMETHOD(setUsed)(P6THIS_ P6UINT32 cBytesInUse) P6PURE;
56 
66  P6DECLCOMMETHOD(size)(P6THIS_ P6UINT32 *pcSize) P6PURE;
67 
93  P6DECLCOMMETHOD(append)(P6THIS_ const P6UINT8 *pBuffer,P6UINT32 cBuffer,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
94 
123  P6DECLCOMMETHOD(appendStr)(P6THIS_ const P6CHAR *pszString,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
124 
136  P6DECLCOMMETHOD(consume)(P6THIS_ P6UINT32 cSize) P6PURE;
137 
150  P6DECLCOMMETHOD(getBufPtr)(P6THIS_ P6UINT8 **ppBuffer,P6UINT32 *pcSize,P6UINT32 *pcUsed) P6PURE;
151 
159  //P6COMMETHOD appendBuffer(P6R::p6IoBuffer *pBuffers) P6PURE;
160  //P6COMMETHOD prependBuffer(P6R::p6IoBuffer *pBuffers) P6PURE;
161  //P6COMMETHOD next(P6R::p6IoBuffer **ppBuffers) P6PURE;
162  };
163  // {49DD087D-5C56-49F1-A76C-5E717E88048A}
164  #define IF_p6IIoBuffer {0x49DD087D,0x5C56,0x49F1,{0xA7,0x6C,0x5E,0x71,0x7E,0x88,0x04,0x8A}}
165 
166  #define P6PKTCUROFFSET ((P6UINT32) -1)
167 
178  #undef INTERFACE
179  #define INTERFACE p6IPacket
181  {
183 
192  P6DECLCOMMETHOD(reset)(P6THIS) P6PURE;
193 
219  P6DECLCOMMETHOD(append)(P6THIS_ const P6UINT8 *pBuffer,P6UINT32 cBuffer,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
220 
249  P6DECLCOMMETHOD(appendStr)(P6THIS_ const P6CHAR *pszString,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
250 
266  P6DECLCOMMETHOD(consume)(P6THIS_ P6UINT32 cSize) P6PURE;
267 
288  P6DECLCOMMETHOD(set8)(P6THIS_ const P6UINT8 val,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
289 
310  P6DECLCOMMETHOD(set16)(P6THIS_ const P6UINT16 val,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
311 
332  P6DECLCOMMETHOD(set32)(P6THIS_ const P6UINT32 val,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
333 
354  P6DECLCOMMETHOD(set64)(P6THIS_ const P6UINT64 val,const P6UINT32 nOffset,P6UINT32 *pUsed) P6PURE;
355 
379  P6DECLCOMMETHOD(extract)(P6THIS_ P6UINT8 *pBuffer,P6UINT32 cBuffer,const P6UINT32 nOffset) P6PURE;
380 
400  P6DECLCOMMETHOD(get8)(P6THIS_ P6UINT8 *pVal,const P6UINT32 nOffset) P6PURE;
401 
421  P6DECLCOMMETHOD(get16)(P6THIS_ P6UINT16 *pVal,const P6UINT32 nOffset) P6PURE;
422 
442  P6DECLCOMMETHOD(get32)(P6THIS_ P6UINT32 *pVal,const P6UINT32 nOffset) P6PURE;
443 
462  P6DECLCOMMETHOD(get64)(P6THIS_ P6UINT64 *pVal,const P6UINT32 nOffset) P6PURE;
463 
474  P6DECLCOMMETHOD(seek)(P6THIS_ P6UINT32 nOffset) P6PURE;
475 
487  P6DECLCOMMETHOD(setUsed)(P6THIS_ P6UINT32 cBytesInUse) P6PURE;
488 
500  P6DECLCOMMETHOD(getUsed)(P6THIS_ P6UINT32 *pcBytesInUse) P6PURE;
501 
513  P6DECLCOMMETHOD(size)(P6THIS_ P6UINT32 *pcSize) P6PURE;
514 
534  P6DECLCOMMETHOD(copyData)(P6THIS_ p6IPacket *pSourcePacket,P6UINT32 nSourceOffset,P6UINT32 cSourceLength) P6PURE;
535 
546  P6DECLCOMMETHOD(setDestAddr)(P6THIS_ P6NETADDR *pAddr) P6PURE;
547 
558  P6DECLCOMMETHOD(getDestAddr)(P6THIS_ P6NETADDR *pAddr) P6PURE;
559 
570  P6DECLCOMMETHOD(setSourceAddr)(P6THIS_ P6NETADDR *pAddr) P6PURE;
571 
582  P6DECLCOMMETHOD(getSourceAddr)(P6THIS_ P6NETADDR *pAddr) P6PURE;
583  };
584 
585  // {BDD25E55-FEE7-4115-ABB2-D5A918D19450}
586  #define IF_p6IPacket {0xBDD25E55,0xFEE7,0x4115,{0xAB,0xB2,0xD5,0xA9,0x18,0xD1,0x94,0x50}}
587 
588 
590  static const P6IOBFFLAGS P6IOBF_NOFLAGS = 0x00000000;
591  static const P6IOBFFLAGS P6IOBF_USEHEAP = 0x00000001;
592  static const P6IOBFFLAGS P6IOBF_ZEROMEM = 0x00000002;
593  static const P6IOBFFLAGS P6IOBF_SETFREEMEM = 0x00000004;
594  static const P6IOBFFLAGS P6IOBF_ENABLEFENCES = 0x00000008;
603  #undef INTERFACE
604  #define INTERFACE p6IIoBufferFactory
606  {
608 
624  P6DECLCOMMETHOD(initialize)(P6THIS_ const P6WCHAR *pwszFactoryName,P6UINT32 cBufferSize,P6UINT32 cInitial,P6UINT32 cGrowby,P6IOBFFLAGS fFlags) P6PURE;
625 
635  P6DECLCOMMETHOD(alloc)(P6THIS_ p6IIoBuffer **ppBuffer) P6PURE;
636 
661  P6DECLCOMMETHOD(getStats)(P6THIS_ P6UINT32 *pcBlock,
662  P6UINT32 *pcActual,
663  P6UINT32 *pcInitial,
664  P6UINT32 *pcGrowby,
665  P6UINT32 *pcTotal,
666  P6UINT32 *pcFree,
667  P6UINT32 *pcHighWater) P6PURE;
668 
669  };
670  // {56ABFCAE-FCBD-438F-BD94-0467700BDFA1}
671  #define IF_p6IIoBufferFactory {0x56ABFCAE,0xFCBD,0x438F,{0xBD,0x94,0x04,0x67,0x70,0x0B,0xDF,0xA1}}
672 
673  // {5A234D2E-FFA9-4022-A37E-4EF576F110EA}
674  #define COMP_p6IoBufferFactory {0x5A234D2E,0xFFA9,0x4022,{0xA3,0x7E,0x4E,0xF5,0x76,0xF1,0x10,0xEA}}
675 
676 #ifdef __cplusplus
677 }
678 } // namespace
679 #endif
680 
681 
682 #endif
683 
uint64_t P6UINT64
Definition: p6types.h:79
uint32_t P6UINT32
Definition: p6types.h:77
#define P6DECLAREICOM
Definition: p6defs.h:191
#define P6PURE
Definition: p6defs.h:192
Standard error codes.
This factory interface is responsible for creating and managing memory pooled Io Buffers (p6IIoBuffer...
Definition: p6iobuffer.h:605
unsigned char P6UINT8
Definition: p6types.h:71
P6COM runtime interfaces definitions.
wchar_t P6WCHAR
Wide character type see p6i18n.h.
Definition: p6types.h:111
The base interface all [p6]COM components must derive from and implement.
Definition: p6comdef.h:97
P6COM base interface definitions.
p6IErrorInfo interface definition
uint16_t P6UINT16
Definition: p6types.h:75
#define P6DECLCOMMETHOD(method)
Definition: p6defs.h:189
P6UINT32 P6IOBFFLAGS
Definition: p6iobuffer.h:589
#define P6THIS_
Definition: p6defs.h:193
P6R Component runtime helper macros, templated, etc.
A generic memory-pooled binary packet component.
Definition: p6iobuffer.h:180
#define P6THIS
Definition: p6defs.h:194
char P6CHAR
Narrow character type.
Definition: p6types.h:105
#define P6DECLAREIF_(iface, baseif)
Definition: p6defs.h:188