Home

User`s Manual

image

Contents

1. include TypecodeAPI h include BytecodeAPI h include SerializerAPI h int main 5 3 Data declaration and FastCdr object creation Open the Visual Studio 2010 solution HelloWorldDFB s n In the file where the function named main is located two tasks have to be done The first one is to describe the native data that will be serialized in this case a structure outside any function in the global scope struct HelloWorldStruct short atti int32_t att2 string att3 This structure is formed by three inner variables the first one is a short the second one is int32_t and the third one is an std string object The second task is to declare and instantiate inside the main function a FastCdr object with a FastBuffer inside it char buffer 500 eProsima FastBuffer cdrBuffer buffer 500 eProsima FastCdr cdr cdrBuffer 20 By coding this three lines a buffer with five hundred bytes has been declared and inserted in the FastCdr object It will be in this buffer where all the data is going to be serialized and from which all data will also be deserialized At this point two objects have to be created one for reading the data for doing the serialization procedure and another in which the data will be recovered HelloWorldStruct inputStruct outputStruct inputStruct att1 10 inputStruct att2 2 inputStruct att3 Hello World
2. String data definition By using eProsima DFB the user can also describe objects defined using std string The function for describing this kind of objects is named createString In this example the way to describe an std string object by using eProsima DFB Typecode API is shown DynamicFastBuffers Typecode stringTypecode stringTypecode DynamicFastBuffers TypecodeAPI createString Boolean data definition If any user wants to describe a boolean data type for serializing or deserializing it the TypecodeAPI class provides a function named createBoolean to do it This function is used as it is shown below DynamicFastBuffers Typecode boolTypecode boolTypecode DynamicFastBuffers TypecodeAPI createBoolean 10 2 1 1 4 Complex data types definition On the other hand if the user wants to describe complex data types another set of functions has to be used These other functions have parameters that the mentioned user must know in order to use them which is a clear difference against the ones described in the previous section There are three kinds of data types that can be defined though a typecode by using eProsima DFB These kinds are e Structures e Arrays e Sequences Structure data definition When it comes to describing struct data types the user must bear in mind that this kind of types are composed by more simple or complex data types This means that th
3. TypecodeAPI createStruct DynamicFastBuffers TypecodeAPI createShort DynamicFastBuffers TypecodeAPI createDouble NULL gt NULL As it can be seen in the previous image the typecode describes a structure with three kinds of data types inside it an integer an std string object and another structure This second structure has a short and a double data types inside 14 2 1 1 8 Limitations The limitations for the typecode creation that must be deeply considered are the following e While structure data types can have any other types inside arrays and sequences cannot have complex data types neither string or boolean types not supported by now e Union or enum data types cannot be described using this version of eProsima Dynamic Fast Buffers 2 2 Generating a specific Bytecode given a Typecode object Once the typecode for describing a concrete data type is created the generation of a bytecode associated to it is necessary to serialize data There are two kinds of bytecode entities that could be generated one for doing data serialization and another for data deserialization This is so because the functions to perform the operations are not the same therefore a specific bytecode must be created for each one The API class that holds the functionality for generating Bytecode objects is DynamicFastBuffers BytecodeAPI 2 2 1 Bytecode for data serialization As it has been mentioned bef
4. Inside the object pointed by shortTypecode there will be an instance of Typecode whose kind represents a short data type Integer data definition To define a typecode which represents an integer value defined by the user the function create nteger must be used DynamicFastBuffers Typecode integerTypecode integerTypecode DynamicFastBuffers TypecodeAPI createInteger Long data definition In order to describe a long data type the function createLong has to be used An example of how to use the mentioned function is shown below DynamicFastBuffers Typecode longTypecode longTypecode DynamicFastBuffers TypecodeAPI createLong Float data definition To describe a simple precision floating point number a function named createFloat must be used This function is also defined in the TypecodeAP class and it can be accessed through DynamicFastBuffers namespace The next example shows how to create a Typecode object associated to a float data type DynamicFastBuffers Typecode floatTypecode floatTypecode DynamicFastBuffers TypecodeAPI createFloat Double data definition The function used for describing a double precision floating point number is named createDouble and as the other functions it can be accessed via the TypecodeAPI class DynamicFastBuffers Typecode doubleTypecode doubleTypecode DynamicFastBuffers TypecodeAPI createDouble
5. As it can be seen in the previous image two structures have been declared The one named inputStruct is where all data will be initialized and read from The other one named outputStruct is where data will be deserialized in the end 5 4 Typecode creation Once the data is defined it must be described by creating an object instance of Typecode class The following code shows how to do it DynamicFastBuffers Typecode structTypecode structTypecode DynamicFastBuffers TypecodeAPI createStruct DynamicFastBuffers TypecodeAPI createShort DynamicFastBuffers TypecodeAPI createInteger DynamicFastBuffers TypecodeAPI createString NULL 3 Note that the internal structure of the typecode is created with exactly the same data types and exactly in the same order than the native ones This must be done to ensure the serialization process finishes successfully 5 5 Bytecode generation Now that the typecode that represents the native data defined by the user has been created it is time for the generation of a bytecode associated to it In this case two Bytecode objects will be generated one for data serialization and another for data deserialization Bearing in mind that the same object can be used for both operations but it has to be redefined for that purpose if that is the case DynamicFastBuffers Bytecode serializationBytecode DynamicFastBuffers Bytecode deserializationBytecode serial
6. The same way a bytecode is generated for serializing data must be done for deserializing it The function of the BytecodeAP class that must be executed is the same one that has been executed in the last example but specifying a different flag An example of how to do this will be shown now bytecode DynamicFastBuffers BytecodeAPI generateBytecode structTypecode DynamicFastBuffers flag DESERIALIZE 3 In the last example the same Bytecode object has been used This can also be done but bearing in mind that its internal data will be overwritten so it will not be valid for doing data serialization The main difference between this two function calls is only the flag specified In this case the parameters are the following e structTypecode The Typecode object previously created e DynamicFastBuffers flag DESERIALIZE Constant value used to specify that the generated bytecode is for doing deserialization By executing this function the user receives an object instance of the Bytecode class which contains an internal structure This structure is a list of pointers to the functions of eProsima Fast CDR API that must be executed for deserializing this kind of data If a NULL value is inserted as first parameter a WrongParamException will be thrown 2 3 Data serialization and deserialization eProsima DFB provides an API that can be easily used for data serialization and deserialization For this matter th
7. eProsima DFB is defined within three main classes These classes names are DynamicFastBuffers TypecodeAP DynamicFastBuffers BytecodeAP and DynamicFastBuffers SerializerAPI The functions that conform the library s API are listed in next subsections The behavior for each function will not be described for that has already been done in previous chapters of this document 3 1 Typecode creation API Public functions located in DynamicFastBuffers TypecodeAPI Function static Typecode createCharacter static Typecode createShort Description Creates a Typecode object for a int8_t char native data type Creates a Typecode object for a int16_t short native data type static Typecode createlnteger Creates a Typecode object for a int32_t native data type static Typecode createLong Creates a Typecode object for a int64_t native data type static Typecode createFloat Creates a Typecode object for a float native data type static Typecode createDouble Creates a Typecode object for a double native data type static Typecode createString Creates a Typecode object for a std string native data type static Typecode createBoolean Creates a Typecode object for a bool native data type static Typecode createStruct Typecode init Creates a Typecode object for a structure based on the description of the inner data static Typecode createArray Typecode type in
8. the 12 respective lengths of each dimension Finally a zero value must be inserted in order to know that no more dimensions are going to be specified DynamicFastBuffers Typecode arrayTypecode sequenceTypecode DynamicFastBuffers TypecodeAPI createArray DynamicFastBuffers TypecodeAPI createLong 25 lt 2 33 E 3 In this function if the number of dimensions first integer is lower than one an object instance of NotEnoughParamsException will be thrown On the other hand if any of the dimension s length is lower than one same case described before a WrongParamException exception object will be thrown Finally an object instance of NotEnoughParamsException will be thrown if the number of dimensions defined is not equal to the number of dimensions really inserted by the user Bear in mind that only simple types are allowed inside arrays but not structures sequences or other arrays Sequence data definition The last complex data that eProsima DFB allows to describe are sequences This kind of type is represented in C as a vector of objects These objects have to be simple data types except for std string which is not supported in the current version and they cannot be under any circumstance complex types A sequence is defined by using a typecode object for describing the kind of data that will be stored inside and an integer greater than zero which specifies the maximum length of the vect
9. the supported types and the functions that must be called to create them TABLE 1 SPECIFYING SIMPLE TYPES IN IDL FOR C User Type C Sample Data Type Function for creation char char charSample createCharacter short int16_t shortSample createShort unsigned short uint1l6_t shortSample createShort int int32_t intSample createInteger unsigned int uint32_t intSample createInteger long int64 t longSample createLong unsigned long uint64 t longSample createLong float float floatSample createFloat double double doubleSample createDouble string std string stringSample createString bool bool boolSample createBoolean 2 1 1 2 Complex types supported Complex types can be created by the developer containing simple types or other complex types if supported These complex types can be used as containers for other simple types or just to define complex data structures such as arrays The following table shows the supported type descriptions typecodes how they are defined in C programming language and which is the function for creating them TABLE 2 SPECIFYING COMPLEX TYPES IN IDL FOR C User Type C Sample Data Type Function for creation struct struct structSample createStruct typel type2 see note below oe typeN NULL std array lt type size gt createArray type nDims diml arraySamplel dim2 dimN 0 type arraySample2 bounded sequence std vector lt type
10. acilitates the development The general steps to build an application which uses DFB library are these e Create a Typecode object that represents the data e Generation of a Bytecode object so that the library knows how to serialize or deserialize the mentioned data e Serialize data into a FastBuffer object using the provided eProsima DFB API for that task e Deserialize the data previously serialized into the user s native structures simple or complex This section describes the basic concepts of these four steps that a developer has to follow to use eProsima DFB 2 1 Describing data through a Typecode A Typecode object is used by eProsima DFB to describe how the user s native data in his application is That is why this object must be created according to the data that will be serialized later If this definition is made wrong eProsima DBF does nor guarantee a successful execution eProsima DFB s typecode is defined by using a kind attribute which specifies the data type and it may contain other Typecode objects inside it The reason for that representation is to provide the developers with a way to define complex data types such as structures inserting other simple or complex data descriptions inside them 2 1 1 Typecode creation syntax 2 1 1 1 Simple types supported eProsima DFB supports a complete variety of simple types that can be described by the developer via the provided API functions The following table shows
11. ating the size of the data before the serialization process so that the buffer could be initialized properly a function named checkSerializedDataSize can be called This function receives a pointer to a Typecode object and from this object the needed buffer size will be calculated If more than one Typecode object has been created the size of all of them must be added and stored in a variable using it afterwards for the buffer creation DynamicFastBuffers Typecode sequenceTypecode sequenceTypecode DynamicFastBuffers TypecodeAPI createSequence DynamicFastBuffers TypecodeAPI createShort 20 3 int size DynamicFastBuffers TypecodeAPI checkSerializedDataSize typecode In case of std string objects which is a variable length data type a fixed length of 255 Bytes will be used If the size of the string object is greater than this value eProsima DFB does not guarantee that there will be enough reserved memory 2 1 1 7 Example Later in this document there will be added different examples for bytecode generation and data serialization and deserialization Due to this a Typecode example object is now defined and this is the one that will be used from now on DynamicFastBuffers Typecode structTypecode structTypecode DynamicFastBuffers TypecodeAPI createStruct DynamicFastBuffers TypecodeAPI createInteger DynamicFastBuffers TypecodeAPI createString DynamicFastBuffers
12. c Fast Buffers DFB from now on provides an easy way to describe and serialize or deserialize native data which has been defined by the user It brings along these features Data description through a typecode O A typecode is a way to describe how is the data that a user wants to use in his application Through this typecode eProsima DFB knows how is the user s native data and how to move through it Avoids the developer from describing data in a static way using an IDL file Bytecode generation O This is just a way for DFB of knowing how to serialize the native data defined by the user There are two kinds of bytecode entities that can be generated one for data serialization and another for data deserialization Data serialization deserialization O eProsima DBF features a way to serialize or deserialize data using a FastCDR object provided by eProsima Fast CDR library The serialized data will be stored inside a buffer defined by the user The deserialized data will be restored in the user s native data type previously defined Support for different packaging strategies for structures O eProsima Dynamic Fast Buffers supports different packaging strategies which can be selected by the user at compile time This means that if it comes the time when the user wants to pack the contents of his structures by adding no padding this library will still work eProsima DFB has been tested using all available b
13. destination Typecode object of the structure a WrongParamException object will be thrown On the other hand if the user does not provide any Typecode objects to insert an exception object instance of NotEnoughParamsException will be 11 thrown Finally if the destination Typecode object is not a structure type description the library will rise a WrongTypeException e Creation using only createStruct The other way of describing a structure is by adding the inner data types as parameters when creating the object An example of how to do this can be seen in the next image DynamicFastBuffers Typecode structTypecode structTypecode DynamicFastBuffers TypecodeAPI createStruct DynamicFastBuffers TypecodeAPI createInteger DynamicFastBuffers TypecodeAPI createString DynamicFastBuffers TypecodeAPI createStruct DynamicFastBuffers TypecodeAPI createShort DynamicFastBuffers TypecodeAPI createDouble NULL s NULL Developers can add other Typecode objects which may be created earlier and then inserted in any order when creating the typecode for describing the structure data type In this example a structure containing an integer a string and another structure has been described Either the user chooses to use addMembers or the default function createStruct with parameters to insert more data types into a structure definition it is important to know that the order of the insertio
14. eProsima Dynamic Fast Buffers User Manual Version 0 2 0 The Middleware Experts eProsima 2013 eProsima Proyectos y Sistemas de Mantenimiento SL Ronda del poniente 2 12G 28760 Tres Cantos Madrid Expertos en Middleware de Red Tel 3491 804 34 48 info eProsima com www eProsima com EC eProsima Trademarks eProsima is a trademark of Proyectos y Sistemas SL All other trademarks used in this document are the property of their respective owners License eProsima Dynamic Fast Buffers is licensed under the terms described in the GNU Lesser General Public License LGPL Technical Support e Phone 34 91 804 34 48 e Email support eProsima com Table of Contents eProsima Dynamic Fast Bufters uenee nena aeea EE A TE REE a ai 1 Tintroductio EE 4 1 1 Data Describing and Serlaltzing 4 SCHEI BS ET 5 2 Building AN application 7 2 1 Describing data through a Tvpecode 8 2 1 1 Typecode Creation svpntan se oaeoi aeania iaa aaaeei araia ieaie daaa ea e iiaa aia 8 2 2 Generating a specific Bytecode given a Typecode obiect 15 2 2 1 Bytecode for data sertaltzaton 15 2 2 2 Bytecode for data deserialzaton 16 2 3 Data serialization and dezertaltzation ue 16 2 3 1 DACA SEAL AU ON i EE 16 2 3 2 Data DeSETIAliZAvIOMN cesiatasstearscarinnncsaaziiesceiin skids denise eaa aa a E a EARE a 17 3 eProsima Dynamic Fast Buffers AP 18 3 1 TYPE COG EE ee edd Eed n 18 3 2 Bytecode Beneratiom AP iii eet gege saves dul
15. een software components that do not share the same language 1 1 Data Describing and Serializing In computer science inside the context of data storage and transmission serialization is the process of translating data structures or objects state into a format that can be stored for example in a file or a memory buffer and recovered later in the same or another computer environment When it comes to dynamic serialization the native data has to be described somehow It is in this moment when eProsima Dynamic Fast Buffers comes in providing the functionality for doing it The data description may be done by using a typecode This is just an entity that stores information in order to provide full knowledge of the data described through it taking care only of the data type and not of its content or value This avoids developers from defining their data types inside an IDL file that would have to be parsed later at run time Once the data has been described the application gets full knowledge of it and of how to manage its content At this moment a bytecode can be generated in order to define how this data types must be serialized therefore it is an internal definition of how to perform this serialization The image below shows the library s functionality Typecode creation solicitude Typecode data description Bytecode generation solicitude Bytecode serialization method 1 2 Main Features eProsima Dynami
16. ere are two functions defined inside the class named DynamicFastBuffers SerializerAPI In order to do the mapping of the native data into a buffer where each serialized datum will be stored this types must be previously defined by coding them For example if any user defines an integer value int32_t it can be then serialized by creating a typecode description for this data generating a bytecode then and using it for doing the mentioned serialization The same thing happens with other data types such as floating point numbers float and double structures sequences etc In the next examples a FastCDR object will be used to store the serialized data This object must be created using the following functions char buffer 50Q eProsima FastBuffer cdrBuffer buffer 500 eProsima FastCdr cdr cdrBuffer 2 3 1 Data serialization When it comes to data serialization a function named serialize defined in the class DynamicFastBuffers SerializerAP _ must be executed This function receives as parameters a void pointer to the native data a Bytecode object previously generated 16 using the BytecodeAP member functions and a FastCdr object created using eProsima Fast CDR library An example of how to perform this action is shown in the next piece of code DynamicFastBuffers SerializerAPI serialize void amp data bytecode amp cdr 3 As it can be seen in the image above the serialize
17. ere will be inner Typecode objects inside the external one used to describe the structure In this case the function used to create the typecode for the structure whose name is createStruct is a little bit different from the previous ones Nevertheless the way to use it is similar There are two main paths that may be chosen to describe a structure typecode The first one is to create the object and then using a function named addMembers specify one or more Typecode objects that will be inserted inside it The second one is based on adding the inner typecode definitions as parameters in the createStruct function Now an example of each approach is shown e Creation using createStruct and then addMembers DynamicFastBuffers Typecode structTypecode structTypecode DynamicFastBuffers TypecodeAPI createStruct DynamicFastBuffers TypecodeAPI addMembers structTypecode DynamicFastBuffers TypecodeAPI createInteger NULL 3 In the previous image a structure is described containing an integer inside it First an object instance of Typecode is created and then the function addMembers is used to add an integer data type inside it If the user wants to add more data definitions to the structure they can be added later by calling the same function bearing in mind this means adding them immediately after the ones that are already added In case a wrong call to this function is made by not specifying the
18. function parameters are e void amp data Void pointer to a variable named data which is the native data defined by the user e bytecode A Bytecode object previously generated using generateBytecode function from the class BytecodeAPI e amp cdr FastCdr object created using eProsima Fast CDR library Once this operation has been performed all the user s data must be serialized inside the buffer existent in the FastCdr object To recover this data a process of deserialization must be done which is explained in next section 2 3 2 Data deserialization Concerning data deserialization another function provided by eProsima DFB must be executed This function is in the class DynamicFastBuffers SerializerAPI and its name is deserialize The next image shows an example of how to deserialize the data DynamicFastBuffers SerializerAPI deserialize void amp data bytecode amp cdr 3 As it can be seen in the image the function s parameters are the same than in the serialize function but the procedure is different In this case the data already serialized is located inside a FastCdr object and the deserialization will be done into the object pointed by the data variable It does not matter which is the data type of the pointed variable as long as the typecode specified at the beginning of the execution is defined according to this data 17 3 eProsima Dynamic Fast Buffers API The API for accessing
19. gt createSequence type size sequenceSample size Note Structures may contain any kind of data type but the other complex types cannot contain complex data types 2 1 1 3 Simple data types description The functions used for doing simple data description are defined in this section This will be done through the creation of a typecode associated to the mentioned data These functions are used always the same way and they have been designed to provide the users with a simple API for data definition The functions of this API are defined in the class DynamicFastBuffers TypecodeAPI Character data definition To describe a character data type the function createCharacter must be used By calling it the users will be able to obtain a Typecode object which describes this kind of data This function is executed as it is shown below DynamicFastBuffers Typecode characterTypecode characterTypecode DynamicFastBuffers TypecodeAPI createCharacter By using this function a new object that defines a character data type will be allocated in the previously declared pointer Short data definition In order to describe a short data type for being serialized the function named createShort included in the TypecodeAPI class must be used This function is shown in the following code sample DynamicFastBuffers Typecode shortTypecode shortTypecode DynamicFastBuffers TypecodeAPI createShort
20. izationBytecode DynamicFastBuffers BytecodeAPI generateBytecode structTypecode DynamicFastBuffers flag SERIALIZE 3 deserializationBytecode DynamicFastBuffers BytecodeAPI generateBytecode structTypecode DynamicFastBuffers flag DESERIALIZE 3 As it can be seen in the image above two objects have been created The one named serializationBytecode contains a few pointers to the functions used for data serialization and the other has the pointers to the functions for deserializing the data 21 5 6 Data serialization For data serialization a function named serialize which is defined within the class DynamicFastBuffers SerializerAP will be used The code for serializing data is shown below DynamicFastBuffers SerializerAPI serialize void amp inputStruct serializationBytecode amp cdr 3 As it has been mentioned in previous sections note that the data defined by the user is passed as a parameter by casting it into a void pointer while its memory structure is described in the bytecode 5 7 Buffer reset If the FastCdr object used for deserializing data is the same that has been used for serializing it the inner buffer of this object must be reset by executing the following function cdr reset 5 8 Data deserialization and Typecode destruction Finally in order to do the data deserialization into a previously declared variable the deserialize fu
21. nction has to be invoked The code for this call is shown next DynamicFastBuffers SerializerAPI deserialize void amp outputStruct serializationBytecode amp cdr 3 DynamicFastBuffers TypecodeAPI deleteTypecode structTypecode In the image above after the execution of the deserialize function all data that has been serialized before will be recovered into the object pointed by the outputStruct void pointer To not waste memory a final call to deleteTypecode function defined in TypecodeAP class is done 22
22. ns is determinant for the Typecode creation to be successful This means that the order must be the same as the order of the native data in the user s application otherwise serialization may fail Note that every call to createStuct or addMembers must have as last parameter a NULL value for there is no way of knowing how many objects the user wants to insert Array data definition Other complex data types that can be described are the arrays An array is described by the kind of data that it holds inside and the length of its dimensions For example an integer matrix with two rows and three columns will be described using a Typecode object and specifying that it has two dimensions having the first one a length of two and the second one a length of three This concrete Typecode object can be created using the function named createArray defined in the TypecodeAP class This function receives as parameters a Typecode object indicating the kind of data that will be stored inside it followed by an integer which specifies the number of dimensions After that the length of each dimension has to be provided In the next image a creation of a Typecode object that represents an array can be seen as an example The first parameter defines the type of data that the array will hold in this case long 64 bit integer values Afterwards the first integer two in this case specifies how many dimensions will be provided being the next two integers
23. or that will hold the data The function used to describe this kind of data type is named createSequence and it is also defined in TypecodeAPI class DynamicFastBuffers Typecode sequenceTypecode sequenceTypecode DynamicFastBuffers TypecodeAPI createSequence DynamicFastBuffers TypecodeAPI createShort 20 3 In this example a sequence of twenty at the most short values is described The first parameter of the createSequence function is used to determine what kind of data type is stored in the sequence and the second one is the maximum number of data that can be inserted in it 2 1 1 5 Data description destruction Once the user has created the typecode for the description of the native types used in his application the Typecode objects must be destroyed in order to not waste memory For doing this a function named deleteTypecode is provided which eliminates all data reserved inside the Typecode object 13 In case of complex data types structures arrays and sequences a single call to this function giving as parameter the upper typecode will be enough to erase all reserved space DynamicFastBuffers Typecode sequenceTypecode sequenceTypecode DynamicFastBuffers TypecodeAPI createSequence DynamicFastBuffers TypecodeAPI createShort 20 3 DynamicFastBuffers TypecodeAPI deleteTypecode sequenceTypecode 2 1 1 6 Calculating serialized data size For calcul
24. ore a specific bytecode for data serialization must be created different than the bytecode for data deserialization eProsima DFB provides a simple API for performing this task by executing a mere function in which users must tell the operation they want to execute by using a parameter Once the Typecode object is already available the generation of a Bytecode object must be done in the following way DynamicFastBuffers Bytecode bytecode bytecode DynamicFastBuffers BytecodeAPI generateBytecode structTypecode DynamicFastBuffers flag SERIALIZE 3 For the example shown in the last image the typecode which describes the data defined in the previous chapter has been used The code above shows a call to a function named generateBytecode whose parameters are e structTypecode The Typecode object already created e DynamicFastBuffers flag SERIALIZE Constant value used to specify that the generated bytecode is for doing data serialization By executing this function the user receives an object instance of Bytecode class which contains an internal structure This structure is a list of pointers to the functions of eProsima Fast Buffers API that must be executed for serializing the native data If a NULL value is inserted as first parameter an exception will occur This exception is an object defined in this library belonging to WrongParamException class 15 2 2 2 Bytecode for data deserialization
25. oundaries for the native data types This feature will only work in Windows for in Linux this can only be achieved using fpack struct option that gcc provides and this is only compatible with libraries compiled using that same flag The use of pragma directives designed to specify different alignment for structures is not supported because of the dynamic behavior of this library e Multi platform o eProsima Dynamic Fast Buffers has been designed and tested for different platforms It supports Windows and Linux Fedora and CentOS distributions Operating Systems in both 32 bit and 64 bit architectures 2 Building an application eProsima Dynamic Fast Buffers allows a developer to easily describe its own native data types using a typecode It provides functions to serialize these data into a previously created buffer and deserialize them back How the library defines or works with the users data types must be transparent so there is no need for them to know any of that information From the developer s point of view a Typecode object that represents the data can be created in his application and this object could be used afterwards for creating a Bytecode object This object will be used later to know how to serialize the user s data In the same way how eProsima DFB uses this Bytecode object should be transparent for the developer for only the data description concerns to him eProsima DFB offers this transparency and f
26. t nDims int dim1 Creates a Typecode object for an array of based on the description of its inner native data type the dimensions and the size of each dimension static Typecode createSequence Typecode type int maxLength Creates a Typecode object for a sequence based on the description of its inner native data type and its length static void addMembers Typecode dest Adds a Typecode object into a predefined structure description static void deleteTypecode Typecode tc Deletes a Typecode object static int checkSerializedDataSize Typecode tc 3 2 Bytecode generation API Checks the size needed for serializing the data described by the Typecode object received as parameter Public functions located in DynamicFastBuffers BytecodeAPI Function static Bytecode generateBytecode Typecode Description Generates a Bytecode object based on a Typecode object received as parameter typecode flag flag 3 3 Data serialization deserialization API Public functions located in DynamicFastBuffers SerializerAP Function static void serialize void data Bytecode bytecode eProsima FastCdr cdr Description Serializes the data using a Bytecode object into a CDR buffer static void deserialize void data Bytecode bytecode eProsima FastCdr cdr Deserializes the data using a Bytecode object from a CDR buffer 18 4 Known Issues The only issue that has been fo
27. und while designing this library is the following e eProsima Dynamic Fast Buffers does not guarantee a correct serialization or deserialization of any data type if there is no match between the typecode created for describing the mentioned data and the native data itself 19 5 HelloWorld example in Visual Studio 2010 In this section an example will be explained step by step of how to create a new project that uses eProsima DFB library on Visual Studio 2010 A complex structure data type will be created and represented through a typecode This data will be serialized and deserialized in order to confirm the correct execution of the functions The example will be made and compiled for a 64 bit Windows 7 OS And for that reason a 64 bit architecture compilation of the library will be needed 5 1 Setting up the environment The first thing that must done is to create a new project named HelloWorldDFB and to make sure that all references to the external libraries in this case eProsima Fast CDR and eProsima Dynamic Fast Buffers are correctly set The linked library files will be in a folder which has to be included as an additional directory The library version will be automatically linked Being this done all classes and headers from this projects can be accessed 5 2 Including headers In the file that contains the main function which will be the entry point to the application some headers must be included include FastCdr h
28. vactadece banevasshecdes aaa aeii dai kies 18 3 3 Data serialization deserialization AP 18 AIKMOWN ISSUCS Ser e eege EE eege EE 19 5 HelloWorld example in Visual Studio 2010 20 5 1 Setting up the environment a a ae aeia 20 5 2 Including NEAASIS eendeitege d gedeelt 20 5 3 Data declaration and FastCdr Object creation 20 ugeet a Seed 21 5 5 Bytecode generation een aaa er Ea AE a E EREE 21 SiG KENE E E E ER REENEN eet Dee 22 5 8 Data deserialization and Typecode destructlon 22 1 Introduction eProsima Dynamic Fast Buffers is a high performance dynamic serialization library which allows users to describe and serialize or deserialize data at run time Its functionality is based on the creation of a typecode which defines the data and the generation afterwards of a bytecode to do the data serialization There is no need for users to know anything about the internal structure of the typecode or the bytecode neither of the serialization procedure This library uses eProsima Fast CDR which is a library designed to serialize and deserialize data in CDR Common Data Representation format CDR is a transfer syntax low level representation for transfer between agents which describes a mapping from data types defined in OMG IDL Interface Definition Language to a byte stream IDL is a specification language made by OMG Object Management Group which describes an interface in a language independent way enabling communication betw

Download Pdf Manuals

image

Related Search

Related Contents

Approx APPHT4  Touchmonitor-Betriebsanleitung  Silverstone ML04  取扱説明書 - サウンドハウス  Nikon Clean N50 Slr With Af 35-80 1:4-5.6d Lens - F50  First Alert 4010YR User's Manual  "user manual"  Assembly and operating instructions Power System Module  Denver DVH-1241  Friteuses à gaz de la série Decathlon (modèles D et HD)  

Copyright © All rights reserved.
Failed to retrieve file