MESSAGE BUS SERVER

From truxwiki.com
Revision as of 17:50, 1 September 2020 by Sam (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Overview

The message bus server is implemented in a DLL that exposes an entry-point function named TruxtonMessageBusServer. An application wishing to communicate to the server hosting the message bus will perform these basic steps:

  1. Manually load the DLL
  2. Get the address of the TruxtonMessageBusServer function in that library
  3. Call TruxtonMessageBusServer with the address of the MESSAGE_BUS_PROVIDER
  4. Use the function pointers in MESSAGE_BUS_SERVER structure to communicate with the server

Interface

struct MESSAGE_BUS_SERVER
{
    uint64_t signature;
    void *   library_handle;
    void *   implementation_handle;

    MESSAGE_BUS_SERVER_CLOSE   close;
    MESSAGE_BUS_SERVER_CREATE  create;
    MESSAGE_BUS_SERVER_DESTROY destroy;
    MESSAGE_BUS_SERVER_OPEN    open;
};

Defines

#define MESSAGE_BUS_SERVER_SIGNATURE (0x726576726553424DULL)
#define MESSAGE_BUS_SERVER_PROVIDER_ENTRY_POINT_NAME "TruxtonMessageBusServer"

#define MESSAGE_BUS_SERVER_LOG_INFORMATION (0)
#define MESSAGE_BUS_SERVER_LOG_WARNING     (1)
#define MESSAGE_BUS_SERVER_LOG_ERROR       (2)
#define MESSAGE_BUS_SERVER_LOG_VERBOSE     (3)

Function Types

using MESSAGE_BUS_SERVER_LOG         = void   (*)(void * logging_handle, int level, char const * message);
using MESSAGE_BUS_SERVER_GET_SETTING = int    (*)(void * context, char const * name, char * destination, int destination_size);
using MESSAGE_BUS_SERVER_CLOSE       = void   (*)(void * handle);
using MESSAGE_BUS_SERVER_CREATE      = void   (*)(void * handle, char const * name);
using MESSAGE_BUS_SERVER_DESTROY     = void   (*)(void * handle, char const * name);
using MESSAGE_BUS_SERVER_OPEN        = void * (*)(void * library_handle, void * context, MESSAGE_BUS_SERVER_GET_SETTING, void * log_context, MESSAGE_BUS_SERVER_LOG log);

using MESSAGE_BUS_SERVER_PROVIDER_ENTRY_POINT = void (*)(MESSAGE_BUS_SERVER *);