Beispiele für inkrementelle Codierung
Der folgende Abschnitt enthält ein Beispiel für die Verwendung des inkrementellen Formatserialisierungshandles für die Typcodierung.
/* This is an acf file. MooType is defined in the idl file */
[ explicit_handle
]
interface regress
{
typedef [ encode,decode ] MooType;
}
Der folgende Auszug stellt die relevanten Anwendungsfragmente dar.
if (MesEncodeIncrementalHandleCreate (State, AllocFn, WriteFn,
&Handle) == RPC_S_OK)
{
//...
/* The serialize works from the beginning of the buffer because
the handle is in the initial state. The Moo_Encode does the
following:
- sizes *pMooObject for marshalling,
- calls AllocFn with the size obtained,
- marshalls into the buffer returned by Alloc, and
- calls WriteFn with the filled buffer
*/
Moo_Encode ( Handle, pMooObject );
...
}
if (MesIncrementalHandleReset (Handle, NULL, NULL, NULL, ReadFn,
MES_DECODE ) == RPC_OK)
{
/*The ReadFn is needed to reset the handle. The arguments
that are NULL do not change. You can also call
MesDecodeIncrementalHandleCreate (State, ReadFn, &Handle);
The Moo_Decode does the following:
- calls Read with the appropriate size of data to read and
receives a buffer with the data
- unmarshalls the object from the buffer into *pMooObject
*/
Moo_Decode ( Handle, pMooObject );
//...
MesHandleFree ( Handle );
}