#include "mama/types.h"
#include "mama/status.h"
#include "mama/subscription.h"
#include "mama/msg.h"
#include "mama/symbolmap.h"
#include "mama/quality.h"
Go to the source code of this file.
Typedefs | |
typedef void(MAMACALLTYPE * | mamaTransportCB) (mamaTransport tport, mamaTransportEvent, short cause, const void *platformInfo, void *closure) |
Invoked when transport disconnects, reconnects, or has a data quality event. More... | |
typedef void(MAMACALLTYPE * | mamaTransportTopicCB) (mamaTransport tport, mamaTransportTopicEvent event, const char *topic, const void *platformInfo, void *closure) |
Invoked when topic is subscribed ot unsubcribed on that transport. More... | |
typedef void(* | mamaTransportLbInitialCB) (int numTransports, int *transportIndex) |
typedef void(* | mamaTransportLbCB) (int curTransportIndex, int numTransports, const char *source, const char *symbol, int *nextTransportIndex) |
Functions | |
MAMAExpDLL const char * | mamaTransportEvent_toString (mamaTransportEvent event) |
Return a text description of the transport event. More... | |
MAMAExpDLL mama_status | mamaTransport_setTransportCallback (mamaTransport transport, mamaTransportCB callback, void *closure) |
Set the transport callback. More... | |
MAMAExpDLL mama_status | mamaTransport_setWriteQueueWatermarks (mamaTransport transport, uint32_t highWater, uint32_t lowWater) |
Set the transport write queue high and low water mark values. More... | |
MAMAExpDLL mama_status | mamaTransport_setTransportTopicCallback (mamaTransport transport, mamaTransportTopicCB callback, void *closure) |
Set the transport topic callback. More... | |
MAMAExpDLL mama_status | mamaTransport_allocate (mamaTransport *result) |
Allocate a transport structure. More... | |
MAMAExpDLL mama_status | mamaTransport_create (mamaTransport transport, const char *name, mamaBridge bridgeImpl) |
Create a previously allocated transport. More... | |
MAMAExpDLL mama_status | mamaTransport_setName (mamaTransport transport, const char *name) |
Set the transport name. More... | |
MAMAExpDLL mama_status | mamaTransport_getName (mamaTransport transport, const char **result) |
Get the transport name. More... | |
MAMAExpDLL const char * | mamaTransport_getMiddleware (mamaTransport transport) |
MAMAExpDLL mama_status | mamaTransport_getOutboundThrottle (mamaTransport transport, mamaThrottleInstance instance, double *result) |
Get the outbound throttle rate. More... | |
MAMAExpDLL void | mamaTransport_disableRefresh (mamaTransport transport, uint8_t disable) |
Disable Refreshing. More... | |
MAMAExpDLL mama_status | mamaTransport_setOutboundThrottle (mamaTransport transport, mamaThrottleInstance instance, double outboundThrottle) |
Set the throttle rate. More... | |
MAMAExpDLL void | mamaTransport_setSymbolMapFunc (mamaTransport transport, mamaSymbolMapFunc mapFunc, void *closure) |
Set the symbol mapping function for a mamaTransport. More... | |
MAMAExpDLL mamaSymbolMapFunc | mamaTransport_getSymbolMapFunc (mamaTransport transport) |
Return the symbol mapping function for a mamaTransport. More... | |
MAMAExpDLL void * | mamaTransport_getSymbolMapFuncClosure (mamaTransport transport) |
Return the symbol mapping function closure for a mamaTransport. More... | |
MAMAExpDLL mama_status | mamaTransport_setDescription (mamaTransport transport, const char *description) |
Set the description for this transport. More... | |
MAMAExpDLL mama_status | mamaTransport_getDescription (mamaTransport transport, const char **description) |
Get the description attribute for the specified transport. More... | |
MAMAExpDLL mama_status | mamaTransport_setInvokeQualityForAllSubscs (mamaTransport transport, int invokeQualityForAllSubscs) |
Set whether to invoke the quality callback for all subscriptions whenever a data quality event occurs (the default), or whether to invoke the quality callback only when data subsequently arrives for a subscription. More... | |
MAMAExpDLL mama_status | mamaTransport_getInvokeQualityForAllSubscs (const mamaTransport transport, int *invokeQualityForAllSubscs) |
Get whether the transport has been set to invoke the quality callback for all subscriptions whenever a data quality event occurs. More... | |
MAMAExpDLL mama_status | mamaTransport_getQuality (const mamaTransport transport, mamaQuality *quality) |
Get the quality of data for the transport. More... | |
MAMAExpDLL mama_status | mamaTransport_destroy (mamaTransport transport) |
Destroy the transport. More... | |
MAMAExpDLL mama_status | mamaTransport_findConnection (mamaTransport transport, mamaConnection *result, const char *ipAddress, uint16_t port) |
Find a connection with specified IP Address and Port. More... | |
MAMAExpDLL mama_status | mamaTransport_getAllConnections (mamaTransport transport, mamaConnection **result, uint32_t *len) |
Return a list of all clients connected to this transport. More... | |
MAMAExpDLL mama_status | mamaTransport_getAllConnectionsForTopic (mamaTransport transport, const char *topic, mamaConnection **result, uint32_t *len) |
Return a list of all clients connected to this transport for a topic. More... | |
MAMAExpDLL mama_status | mamaTransport_freeAllConnections (mamaTransport transport, mamaConnection *result, uint32_t len) |
Free resources allocated by mamaTransport_getAllConnections(). More... | |
MAMAExpDLL mama_status | mamaTransport_getAllServerConnections (mamaTransport transport, mamaServerConnection **result, uint32_t *len) |
Return a list of all servers connected to this transport. More... | |
MAMAExpDLL mama_status | mamaTransport_freeAllServerConnections (mamaTransport transport, mamaServerConnection *result, uint32_t len) |
Free resources allocated by mamaTransport_getAllServerConnections(). More... | |
MAMAExpDLL mama_status | mamaTransport_setLbInitialCallback (mamaTransport transport, mamaTransportLbInitialCB callback) |
Set the callback which will decide which member of the load balancing group to use initially. More... | |
MAMAExpDLL mama_status | mamaTransport_setLbCallback (mamaTransport transport, mamaTransportLbCB callback) |
Set the callback which will allocate the next member of the load balancing group to use. More... | |
MAMAExpDLL mama_status | mamaTransport_requestConflation (mamaTransport transport) |
Request that publishers conflate incoming messages. More... | |
MAMAExpDLL mama_status | mamaTransport_requestEndConflation (mamaTransport transport) |
Request that publishers stop conflating incoming messages for this transport. More... | |
MAMAExpDLL mama_status | mamaTransport_setDeactivateSubscriptionOnError (mamaTransport transport, int deactivate) |
MAMAExpDLL int | mamaTransport_getDeactivateSubscriptionOnError (mamaTransport transport) |
MAMAExpDLL mama_status | mamaTransport_getNativeTransport (mamaTransport transport, int index, void **nativeTport) |
Return a pointer tothe underlying native transport. More... | |
MAMAExpDLL mama_status | mamaTransport_getNativeTransportNamingCtx (mamaTransport transport, int index, void **nativeTportNamingCtx) |
Return a pointer to the underlying native naming context the transport is using. More... | |
MAMAExpDLL mamaStatsCollector | mamaTransport_getStatsCollector (mamaTransport transport) |
MAMAExpDLL mama_status | mamaTransport_getClosure (mamaTransport transport, void **closure) |
Return the closure. More... | |
MAMAExpDLL mama_status | mamaTransport_setClosure (mamaTransport transport, void *closure) |
Set a closure. More... | |
typedef void(MAMACALLTYPE * mamaTransportCB) (mamaTransport tport, mamaTransportEvent, short cause, const void *platformInfo, void *closure) |
Invoked when transport disconnects, reconnects, or has a data quality event.
tport | The transport associated with the transport event |
mamaTransportEvent | The transport event |
cause | The cause of the transport event |
platformInfo | Info associated with the transport event |
closure | The closure argument to pass to the callback whenever it is invoked. |
The cause and platformInfo are supplied only by some middlewares. The information provided by platformInfo is middleware specific. The following middlewares are supported:
tibrv: provides the char* version of the tibrv advisory message. wmw: provides a pointer to a mamaConnection struct for the event
typedef void(MAMACALLTYPE * mamaTransportTopicCB) (mamaTransport tport, mamaTransportTopicEvent event, const char *topic, const void *platformInfo, void *closure) |
Invoked when topic is subscribed ot unsubcribed on that transport.
tport | The transport associated with the transport topic event |
mamaTransportTopicEvent | The transport topic event |
topic | The topic being subscribed or unsubscribed to |
platformInfo | Info associated with the transport topicevent |
closure | The closure argument to pass to the callback whenever it is invoked. |
The platformInfo is supplied only by some middlewares. The information provided by platformInfo is middleware specific. The following middlewares are supported:
wmw: provides a pointer to a mamaConnection struct for the event
typedef void(* mamaTransportLbInitialCB) (int numTransports, int *transportIndex) |
typedef void(* mamaTransportLbCB) (int curTransportIndex, int numTransports, const char *source, const char *symbol, int *nextTransportIndex) |
enum mamaTransportEvent |
MAMA passes this enumeration as a parameter to the mamaTransportCB if a client installs one.
The values passed depend on the underlying middleware:
All Middleware: MAMA_TRANSPORT_QUALITY is passed when an the underlying transport detects an event that may affect data quality. Depending on the event, MAMA may also mark subscriptions as STALE or MAYBE_STALE.
TIBRV: TIBRV invokes the callback with MAMA_TRANSPORT_DISCONNECT when the transport disconnects from the RV daemon and MAMA_TRANSPORT_RECONNECT when it reestablishes a connection to the daemon.
Wombat Middleware: For Wombat Middleware MAMA distinguishes between connections established from a transport to another transport and connections established by the transport from another transport. In general MAMA applications establish connection from a MAMA transport to a feed handler (publisher); however, they may also accept connections from other MAMA clients. Applications subscribe to topics and publisher messages over all connections. When a transport successfully connects to another transport (i.e. a feed handler) the mamaTransportCallback receives MAMA_TRANSPORT_CONNECT if the connection succeeds immediately otherwise it receives a MAMA_TRANSPORT_RECONNECT if it subsequently succeeds. Wombat Middleware transports may be configured to retry failed connections. When a connection that a transport establishes to another transport (the publisher by convention) and the connection is lost the mamaTranpsortCallback receives the MAMA_TRANSPORT_PUBLISHER_DISCONNECT event. When a transport accepts a connection from a remote transport (the subscriber by convention) it receives either a MAMA_TRANSPORT_ACCEPT or MAMA_TRANSPORT_ACCEPT_RECONNECT event indicating that the remote client is connecting or reconnecting. When the client disconnects MAMA passes the MAMA_TRANSPORT_DISCONNECT value.
MAMA passes this enumeration as a parameter to the mamaTransportTopicCB if a client installs one.
Wombat Middleware: For connection based transports an event is invoked when a client makes a subscription to a topic on a transport or unsubscribes from a topic on a transport.
Enumerator | |
---|---|
MAMA_TRANSPORT_TOPIC_SUBSCRIBED | |
MAMA_TRANSPORT_TOPIC_UNSUBSCRIBED |
enum tportLbScheme |
Enum to represent the different load balancing schemes available.
TPORT_LB_SCHEME_STATIC - keep the same lb sub tport for each subscription. TPORT_LB_SCHEME_ROUND_ROBIN - round robin between the members of the lb group for each subscription TPORT_LB_SCHEME_API - let the user defined load balancing callback(s) decide. TPORT_LB_SCHEME_LIBRARY - use the load balancing in a external library
Enumerator | |
---|---|
TPORT_LB_SCHEME_STATIC | |
TPORT_LB_SCHEME_ROUND_ROBIN | |
TPORT_LB_SCHEME_API | |
TPORT_LB_SCHEME_LIBRARY |
enum mamaThrottleInstance |
Enum to determine to which throttle a call applies.
Currently, the the default throttle, used by the publisher, and the initial value request throttle are the same. Mama sends recap requests on a separate throttle.
Enumerator | |
---|---|
MAMA_THROTTLE_DEFAULT | |
MAMA_THROTTLE_INITIAL | |
MAMA_THROTTLE_RECAP |
MAMAExpDLL const char* mamaTransportEvent_toString | ( | mamaTransportEvent | event | ) |
Return a text description of the transport event.
MAMAExpDLL mama_status mamaTransport_setTransportCallback | ( | mamaTransport | transport, |
mamaTransportCB | callback, | ||
void * | closure | ||
) |
Set the transport callback.
It receives advisories when a transport disconnects or reconnects. Passing NULL removes the callback.
MAMAExpDLL mama_status mamaTransport_setWriteQueueWatermarks | ( | mamaTransport | transport, |
uint32_t | highWater, | ||
uint32_t | lowWater | ||
) |
Set the transport write queue high and low water mark values.
The MAMA_TRANSPORT_WRITE_QUEUE_HIGH_WATER_MARK and MAMA_TRANSPORT_WRITE_QUEUE_HIGH_WATER_MARK events will be delivered though the transport callback when the respective number of items are outstanding on a clients write queue.
MAMAExpDLL mama_status mamaTransport_setTransportTopicCallback | ( | mamaTransport | transport, |
mamaTransportTopicCB | callback, | ||
void * | closure | ||
) |
Set the transport topic callback.
It receives advisories when a client subscribes or unsubscribes to a topic on the transport
MAMAExpDLL mama_status mamaTransport_allocate | ( | mamaTransport * | result | ) |
Allocate a transport structure.
Do not free this memory, use mamaTransport_destroy() instead. The transport is not created until mamaTransport_create() is called. Any transport properties should be set after calling allocate() and prior to calling create()
result | The address to where the transport will be written. |
MAMAExpDLL mama_status mamaTransport_create | ( | mamaTransport | transport, |
const char * | name, | ||
mamaBridge | bridgeImpl | ||
) |
Create a previously allocated transport.
Platform specific parameters are read from the properties file mama.properties. The properties file is located in the WOMBAT_PATH directory. The parameters are dependent on the underlying messaging transport.
TIBRV: transports support the following: mama.tibrv.transport.name.service, mama.tibrv.transport.name.network, and mama.tibrv.transport.name.daemon. These correspond to the parameters for tibrvTransport_Create().
LBM: See the example mama.properties supplied with the release.
transport | The previously allocated transport. |
name | The name of the transport in the mama.properties file. |
bridgeImpl | The middleware for which the transport is being created. |
MAMAExpDLL mama_status mamaTransport_setName | ( | mamaTransport | transport, |
const char * | name | ||
) |
Set the transport name.
This can be used to set the name without calling mamaTransport_create()
transport | The transport from which the name is being obtained. |
name | The name of the transport in the mama.properties file. |
MAMAExpDLL mama_status mamaTransport_getName | ( | mamaTransport | transport, |
const char ** | result | ||
) |
Get the transport name.
This the name that was passed to the mamaTransport_create() or mamaTransport_setName() function.
transport | The transport from which the name is being obtained. |
result | Pointer to the transport name string. |
MAMAExpDLL const char* mamaTransport_getMiddleware | ( | mamaTransport | transport | ) |
MAMAExpDLL mama_status mamaTransport_getOutboundThrottle | ( | mamaTransport | transport, |
mamaThrottleInstance | instance, | ||
double * | result | ||
) |
Get the outbound throttle rate.
This the rate at which the transport sends outbound messages to the feed handlers. It is also the rate at which new subscriptions are created. Its purpose is to avoid flooding the network with requests.
transport | the transport. |
instance | the instance |
result | Pointer to the resulting value in messages/second. |
MAMAExpDLL void mamaTransport_disableRefresh | ( | mamaTransport | transport, |
uint8_t | disable | ||
) |
Disable Refreshing.
transport | the transport instance |
disable | t/f. |
MAMAExpDLL mama_status mamaTransport_setOutboundThrottle | ( | mamaTransport | transport, |
mamaThrottleInstance | instance, | ||
double | outboundThrottle | ||
) |
Set the throttle rate.
transport | the transport. |
instance | the instance |
outboundThrottle | the rate in messages/second. |
MAMAExpDLL void mamaTransport_setSymbolMapFunc | ( | mamaTransport | transport, |
mamaSymbolMapFunc | mapFunc, | ||
void * | closure | ||
) |
Set the symbol mapping function for a mamaTransport.
transport | The transport. |
mapFunc | The symbol mapping function. |
closure | The closure argument to pass to mappingFunc whenever it is invoked. |
MAMAExpDLL mamaSymbolMapFunc mamaTransport_getSymbolMapFunc | ( | mamaTransport | transport | ) |
Return the symbol mapping function for a mamaTransport.
transport | The transport. |
MAMAExpDLL void* mamaTransport_getSymbolMapFuncClosure | ( | mamaTransport | transport | ) |
Return the symbol mapping function closure for a mamaTransport.
transport | The transport. |
MAMAExpDLL mama_status mamaTransport_setDescription | ( | mamaTransport | transport, |
const char * | description | ||
) |
Set the description for this transport.
If the underlying middleware supports the concept of a description the values will be passed on. Otherwise MAMA will maintain the description internally.
transport | The transport. |
description | The description for the transport. This will be copied. |
MAMAExpDLL mama_status mamaTransport_getDescription | ( | mamaTransport | transport, |
const char ** | description | ||
) |
Get the description attribute for the specified transport.
Note that a copy of the description is not returned. Do not change or free this memory.
transport | The transport |
description | The address to where the description will be written. |
MAMAExpDLL mama_status mamaTransport_setInvokeQualityForAllSubscs | ( | mamaTransport | transport, |
int | invokeQualityForAllSubscs | ||
) |
Set whether to invoke the quality callback for all subscriptions whenever a data quality event occurs (the default), or whether to invoke the quality callback only when data subsequently arrives for a subscription.
If set to true, an onQuality callback will be invoked for a subscription whenever a data quality event occurs on the transport, even in between updates for that description. If set to false, the onQuality callback will not be called when the data quality event occurs on the transport. However, it will still be invoked when an update arrives for the subscription.
transport | The transport |
invokeQualityForAllSubscs | Whether to invoke quality callback for all subscriptions |
MAMAExpDLL mama_status mamaTransport_getInvokeQualityForAllSubscs | ( | const mamaTransport | transport, |
int * | invokeQualityForAllSubscs | ||
) |
Get whether the transport has been set to invoke the quality callback for all subscriptions whenever a data quality event occurs.
transport | The transport |
invokeQualityForAllSubscs | Whether transport has been set to invoke quality callback for all subscriptions |
MAMAExpDLL mama_status mamaTransport_getQuality | ( | const mamaTransport | transport, |
mamaQuality * | quality | ||
) |
Get the quality of data for the transport.
Currently only implemented for the Tibco RV middleware. Other middlewares always return STATUS_OK
transport | The transport |
quality | The quality of data for the transport |
MAMAExpDLL mama_status mamaTransport_destroy | ( | mamaTransport | transport | ) |
Destroy the transport.
transport | the transport. |
MAMAExpDLL mama_status mamaTransport_findConnection | ( | mamaTransport | transport, |
mamaConnection * | result, | ||
const char * | ipAddress, | ||
uint16_t | port | ||
) |
Find a connection with specified IP Address and Port.
If the port is 0, the call returns the first connection with the specified IP Address. If a connection is not found the method returns MAMA_STATUS_NOT_FOUND and *result == NULL. The caller is responsible for calling mamaConnection_free().
For middleware that does not provide access to per-connection information (non WMW middleware), the method returns MAMA_STATUS_NOT_IMPL.
MAMAExpDLL mama_status mamaTransport_getAllConnections | ( | mamaTransport | transport, |
mamaConnection ** | result, | ||
uint32_t * | len | ||
) |
Return a list of all clients connected to this transport.
The result and len must be passed to mamaTransport_freeAllConnections() to free resources allocated by this function.
MAMAExpDLL mama_status mamaTransport_getAllConnectionsForTopic | ( | mamaTransport | transport, |
const char * | topic, | ||
mamaConnection ** | result, | ||
uint32_t * | len | ||
) |
Return a list of all clients connected to this transport for a topic.
The result and len must be passed to mamaTransport_freeAllConnections() to free resources allocated by this function.
MAMAExpDLL mama_status mamaTransport_freeAllConnections | ( | mamaTransport | transport, |
mamaConnection * | result, | ||
uint32_t | len | ||
) |
Free resources allocated by mamaTransport_getAllConnections().
MAMAExpDLL mama_status mamaTransport_getAllServerConnections | ( | mamaTransport | transport, |
mamaServerConnection ** | result, | ||
uint32_t * | len | ||
) |
Return a list of all servers connected to this transport.
The result and len must be passed to mamaTransport_freeAllServerConnections() to free resources allocated by this function.
MAMAExpDLL mama_status mamaTransport_freeAllServerConnections | ( | mamaTransport | transport, |
mamaServerConnection * | result, | ||
uint32_t | len | ||
) |
Free resources allocated by mamaTransport_getAllServerConnections().
MAMAExpDLL mama_status mamaTransport_setLbInitialCallback | ( | mamaTransport | transport, |
mamaTransportLbInitialCB | callback | ||
) |
Set the callback which will decide which member of the load balancing group to use initially.
If no callback is set then one will be chosen at random.
MAMAExpDLL mama_status mamaTransport_setLbCallback | ( | mamaTransport | transport, |
mamaTransportLbCB | callback | ||
) |
Set the callback which will allocate the next member of the load balancing group to use.
The callback, if set, will be invoked for each new subscription. If no callback is set then the currently selected member the same one will be used for all subscriptions
MAMAExpDLL mama_status mamaTransport_requestConflation | ( | mamaTransport | transport | ) |
Request that publishers conflate incoming messages.
Publishers that support conflation (currently only Wombat TCP middleware) will enable conflation for this transport if possible.
MAMAExpDLL mama_status mamaTransport_requestEndConflation | ( | mamaTransport | transport | ) |
Request that publishers stop conflating incoming messages for this transport.
Publishers that support conflation (currently only Wombat TCP middleware) will stop conflating messages if possible. Note that the publisher may continue to send conflated messages at its discretion.
MAMAExpDLL mama_status mamaTransport_setDeactivateSubscriptionOnError | ( | mamaTransport | transport, |
int | deactivate | ||
) |
MAMAExpDLL int mamaTransport_getDeactivateSubscriptionOnError | ( | mamaTransport | transport | ) |
MAMAExpDLL mama_status mamaTransport_getNativeTransport | ( | mamaTransport | transport, |
int | index, | ||
void ** | nativeTport | ||
) |
Return a pointer tothe underlying native transport.
Applications should avoid this method if possible as it may result in non-portable, middleware specific code. Callers must cast the nativeTport to the appropriate type (ie. tibrvTransport*).
Only implemented for TIBRV.
MAMAExpDLL mama_status mamaTransport_getNativeTransportNamingCtx | ( | mamaTransport | transport, |
int | index, | ||
void ** | nativeTportNamingCtx | ||
) |
Return a pointer to the underlying native naming context the transport is using.
Applications should avoid this method if possible as it may result in non-portable, middleware specific code. Callers must cast the native naming context to the appropriate type (ie. wmwns*).
Only implemented for WMW version 5 and above.
MAMAExpDLL mamaStatsCollector mamaTransport_getStatsCollector | ( | mamaTransport | transport | ) |
MAMAExpDLL mama_status mamaTransport_getClosure | ( | mamaTransport | transport, |
void ** | closure | ||
) |
Return the closure.
transport | The transport. |
closure | holds the result. |
MAMAExpDLL mama_status mamaTransport_setClosure | ( | mamaTransport | transport, |
void * | closure | ||
) |
Set a closure.
transport | The transport. |
closure | holds the closure to be added. |