TIBCO Enterprise Message Service extends the JMS MapMessage and StreamMessage body types in two ways. These extensions allow TIBCO Enterprise Message Service to exchange messages with TIBCO Rendezvous and TIBCO SmartSockets programs, which have certain features not available within the JMS specification.
• You can insert another MapMessage or StreamMessage instance as a submessage into a MapMessage or StreamMessage, generating a series of nested messages, instead of a flat message.These extensions add considerable flexibility to the two body types. However, they are extensions and therefore not compliant with JMS specifications. Extended messages are tagged as extensions with the vendor property tag JMS_TIBCO_MSG_EXT.For more information on message compatibility with Rendezvous messages, see Message Body in TIBCO Enterprise Message Service Release Notes.tibems_status tibemsMapMsg_Create(tibemsMapMsg* message );
message has usage pointer.
When your application creates a message, it also allocates storage for that message. This storage must subsequently be freed by a call to tibemsMsg_Destroy.tibemsMapMsg_Gettibems_status tibemsMapMsg_GetBoolean(tibemsMapMsg message,tibems_bool* value );tibems_status tibemsMapMsg_GetByte(tibemsMapMsg message,tibems_byte* value );tibems_status tibemsMapMsg_GetBytes(tibemsMapMsg message,tibems_uint* bytesSize );tibems_status tibemsMapMsg_GetChar(tibemsMapMsg message,tibems_wchar* value );tibems_status tibemsMapMsg_GetDouble(tibemsMapMsg message,tibems_double* value );tibems_status tibemsMapMsg_GetField(tibemsMapMsg message,tibemsMsgField* value );tibems_status tibemsMapMsg_GetFloat(tibemsMapMsg message,tibems_float* value );tibems_status tibemsMapMsg_GetInt(tibemsMapMsg message,tibems_int* value );tibems_status tibemsMapMsg_GetLong(tibemsMapMsg message,tibems_long* value );tibems_status tibemsMapMsg_GetMapMsg(tibemsMapMsg message,tibemsMapMsg* value );tibems_status tibemsMapMsg_GetShort(tibemsMapMsg message,tibems_short* value );tibems_status tibemsMapMsg_GetString(tibemsMapMsg message,
message and bytes have usage pointer.value has usage pointer only in tibemsMapMsg_GetMapMsg and tibemsMapMsg_GetString (but not in the other calls documented in this group).
For strings, nested messages and fields, the function stores (in this location) a pointer to the value within the message. tibemsMapMsg_GetBytes stores a pointer to the byte sequence in this location. tibemsMapMsg_GetBytes stores the length of the byte sequence in this location.The JMS specification defines these calls to extract data from the name-value pairs of a map message.To get array values from a map message, call tibemsMapMsg_GetField, then extract the array value from the field; see tibemsMsgField on page 133.tibems_status tibemsMapMsg_GetMapNames(tibemsMsg message,tibemsMsgEnum* enumeration );
message and enumeration have usage pointer.
tibems_status tibemsMapMsg_ItemExists(tibemsMapMsg message,tibems_bool* exists );
message has usage pointer.
tibemsMapMsg—SetSingle Value
C Declarationstibems_status tibemsMapMsg_SetBoolean(tibemsMapMsg message,tibems_bool value );tibems_status tibemsMapMsg_SetByte(tibemsMapMsg message,tibems_byte value );tibems_status tibemsMapMsg_SetChar(tibemsMapMsg message,tibems_wchar value );tibems_status tibemsMapMsg_SetDouble(tibemsMapMsg message,tibems_double value );tibems_status tibemsMapMsg_SetFloat(tibemsMapMsg message,tibems_float value );tibems_status tibemsMapMsg_SetInt(tibemsMapMsg message,tibems_int value );tibems_status tibemsMapMsg_SetLong(tibemsMapMsg message,tibems_long value );tibems_status tibemsMapMsg_SetShort(tibemsMapMsg message,tibems_short value );tibems_status tibemsMapMsg_SetString(tibemsMapMsg message,Array
C Declarationstibems_status tibemsMapMsg_SetDoubleArray(tibemsMapMsg message,const tibems_double* value,tibems_uint count );tibems_status tibemsMapMsg_SetFloatArray(tibemsMapMsg message,const tibems_float* value,tibems_uint count );tibems_status tibemsMapMsg_SetIntArray(tibemsMapMsg message,const tibems_int* value,tibems_uint count );tibems_status tibemsMapMsg_SetLongArray(tibemsMapMsg message,const tibems_long* value,tibems_uint count );tibems_status tibemsMapMsg_SetShortArray(tibemsMapMsg message,const tibems_short* value,tibems_uint count );Nested Message C Declarationstibems_status tibemsMapMsg_SetMapMsg(tibemsMapMsg message,tibems_bool takeOwnership );tibems_status tibemsMapMsg_SetStreamMsg(tibemsMsg message,tibemsMsg streamMsg,tibems_bool takeOwnership);
Array functions set array values of this size (must be a positive number). tibemsMapMsg_SetMapMsg sets this map message as a nested value. Nested message functions use this parameter to control ownership of nested messages.When this argument is TIBEMS_TRUE, the call increments the reference count of the nested message. This action prevents other calls from destroying the nested message improperly.We recommend that all calls supply TIBEMS_TRUE.Array functions and nested message functions extend the JMS specification. Use them only with SmartSockets or Rendezvous messages. Programs that use these extensions might be non-compliant, and cannot interoperate with other JMS providers.tibems_status tibemsMapMsg_SetBytes(tibemsMapMsg message,tibems_uint bytesSize );tibems_status tibemsMapMsg_SetReferencedBytes(tibemsMapMsg message,tibems_uint bytesSize );
message has usage pointer.
tibemsMapMsg_SetBytes copies the byte array into the map message field. The program may free the orignal byte array after this call returns.tibemsMapMsg_SetReferencedBytes adds a reference to the byte array, but does not copy the bytes. When the byte array is very large, it can be more efficient to avoid making a copy. However, the program must not free nor modify the original byte array until after freeing the map message.
Copyright © TIBCO Software Inc. All Rights Reserved.