Difference between revisions of "MESSAGE BUS SERVER"

From truxwiki.com
Jump to navigation Jump to search
 
Line 1: Line 1:
 +
=Overview=
 +
The message bus server is implemented in a [https://en.wikipedia.org/wiki/Dynamic-link_library DLL] that exposes an entry-point function named <code>TruxtonMessageBusServer</code>.
 +
An application wishing to communicate to the server hosting the message bus will perform these basic steps:
 +
# Manually load the [https://en.wikipedia.org/wiki/Dynamic-link_library DLL]
 +
# Get the address of the <code>TruxtonMessageBusServer</code> function in that library
 +
# Call <code>TruxtonMessageBusServer</code> with the address of the <code>MESSAGE_BUS_PROVIDER</code>
 +
# Use the function pointers in <code>MESSAGE_BUS_SERVER</code> structure to communicate with the server
 +
 
=Interface=
 
=Interface=
 
<syntaxhighlight lang="C++">
 
<syntaxhighlight lang="C++">
struct MESSAGE_BUS_PROVIDER
+
struct MESSAGE_BUS_SERVER
 
{
 
{
 
     uint64_t signature;
 
     uint64_t signature;

Latest revision as of 17:50, 1 September 2020

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 *);