Data Publish/Subscribe C API

The publish/subscribe API provides a topic-based publish/subscribe mechanism to exchange arbitrary user data. It consists of data publishers and data subscribers.

Data Publishers

SilKit_ReturnCode SilKit_DataPublisher_Create(SilKit_DataPublisher **outPublisher, SilKit_Participant *participant, const char *controllerName, SilKit_DataSpec *dataSpec, uint8_t history)

Create a DataPublisher on the provided simulation participant with the provided properties.

Parameters:
  • outPublisher – Pointer to which the resulting DataPublisher reference will be written.

  • participant – The simulation participant for which the DataPublisher should be created.

  • controllerName – The name of this controller (UTF-8).

  • dataSpec – The specification of topic, media type and labels.

  • history – A number indicating the number of historic values that should be replayed for a new DataSubscriber. Restricted to {0|1}.

SilKit_ReturnCode SilKit_DataPublisher_Publish(SilKit_DataPublisher *self, const SilKit_ByteVector *data)

Publish data through the provided DataPublisher.

Parameters:
  • self – The DataPublisher that should publish the data.

  • data – The data that should be published.

Data Subscribers

SilKit_ReturnCode SilKit_DataSubscriber_Create(SilKit_DataSubscriber **outSubscriber, SilKit_Participant *participant, const char *controllerName, SilKit_DataSpec *dataSpec, void *dataHandlerContext, SilKit_DataMessageHandler_t dataHandler)

Create a DataSubscriber on the provided simulation participant with the provided properties.

Parameters:
  • outSubscriber – Pointer to which the resulting DataSubscriber reference will be written.

  • participant – The simulation participant for which the DataSubscriber should be created.

  • controllerName – The name of this controller (UTF-8).

  • dataSpec – The specification of topic, media type and labels.

  • dataHandlerContext – A user provided context that is reobtained on data reception in the dataHandler.

  • dataHandler – The handler that is called on data reception. Can be overwritten by SilKit_DataSubscriber_SetDataMessageHandler.

SilKit_ReturnCode SilKit_DataSubscriber_SetDataMessageHandler(SilKit_DataSubscriber *self, void *context, SilKit_DataMessageHandler_t dataHandler)

Sets / overwrites the default handler to be called on data reception.

Parameters:
  • self – The DataSubscriber for which the handler should be set.

  • context – A user provided context, that is reobtained on data reception in the dataHandler.

  • dataHandler – A handler that is called on data reception.

Handlers

The DataSubscriber is created with a handler for data reception:

typedef void (*SilKit_DataMessageHandler_t)(void *context, SilKit_DataSubscriber *subscriber, const SilKit_DataMessageEvent *dataMessageEvent)

Handler type for incoming data message events on DataSubscribers.

Param context:

The context that the user provided on registration.

Param subscriber:

The affected subscriber.

Param dataMessageEvent:

Contains the raw data and send timestamp.

Data Structures

struct SilKit_DataMessageEvent

An incoming DataMessage of a DataPublisher containing raw data and timestamp.

Public Members

SilKit_StructHeader structHeader
SilKit_NanosecondsTime timestamp

Send timestamp of the event.

SilKit_ByteVector data

Data field containing the payload.