Use Case: Building a Market Data Message

Use methods offered by the Publisher API to get the feed handler to build a message to send to the RAP system.

The following sample code builds a market data message.

Note: Error checking has been ignored for simplicity; production code should include error checking.
	PUB_CALLBACKS * callbacks;
	PUB_STARTUP * startup;
	PUB_SEND_MESSAGE_CONTEXT * msg;
	uint16_t error_code;		
		callbacks = Allocate a PUB_CALLBACKS structure;
		callbacks->shutdown = &myShutdownEventReceiver;		
		startup = Allocate a PUB_STARTUP structure;
		startup->config_dir = configuration file directory or null;
		startup->template_dir = “templates”;
		startup->strict_check = false;
		startup->component_subtype = “FAST Feed Handler”;
		startup->callbacks = callbacks;
	pub_initialize( startup );
	msg = Allocate a PUB_SEND_MESSAGE_CONTEXT structure;
	loop for each message {
		error_code = pub_beginMessage( <message_type>, msg );
		error_code = pub_setInt32Field( msg, <field_name>, <field_value> );
		error_code = pub_setStringField( msg, <field_name>, <field_value> );
		error_code = pub_setInt16Field( msg, <field_name>, <field_value> );
		error_code = pub_sendMessage( msg );
}	
		error_code = pub_flush();	
		error_code = pub_shutdown( false );
Free the PUB_SEND_MESSAGE_CONTEXT structure;
Free the PUB_CALLBACKS structure;

To build multiple messages at once, allocate several PUB_SEND_MESSAGE_CONTEXT structures and use one structure per message being simultaneously built. Only one call should be made to initialize the Publisher, not one per thread. Similarly, only a single call should be made to shut down the Publisher.

The feed handler does not need to call flush. This call is optional. The shutdown API accepts a Boolean parameter which indicates whether to flush any buffered messages before shutting down.


Created October 8, 2009. Send feedback on this help topic to Sybase Technical Publications: pubs@sybase.com