Skip to content

Latest commit

 

History

History
68 lines (57 loc) · 4.48 KB

File metadata and controls

68 lines (57 loc) · 4.48 KB

Table of Contents {#contents}

\if cpp

Gravity CPP API

  • Getting started with Gravity and connecting to the Service Directory.
    • Initialize a \ref gravity::GravityNode "GravityNode" with a unique componentID through \ref gravity::GravityNode::init() "GravityNode::init()" to connect to the Service Directory.
    • The Service Directory is what manages all of the \ref gravity::GravityNode "GravityNodes", data subscriptions, publications, requests, and responses on the Gravity Network.
  • Data flows through the GravityNetwork as \ref gravity::GravityDataProduct "GravityDataProducts".
    • \ref gravity::GravityDataProduct "GravityDataProducts" are easily interchangeable with Google Protocol Buffer messages.
      • Use \ref gravity::GravityDataProduct::setData() "GravityDataProduct::setData()" to move Google Protocol Buffer messages into the class.
      • Use \ref gravity::GravityDataProduct::populateMessage "GravityDataProduct::populateMessage()" to transfer the data from the class into a Google Protocol Buffer message.
    • \ref gravity::GravityDataProduct "GravityDataProducts" are sent through the pub-sub method.
      • Before publishing, register the ID of each data product you wish to publish with \ref gravity::GravityNode::registerDataProduct() "GravityNode::registerDataProduct()".
      • Then publish using \ref gravity::GravityNode::publish() "GravityNode::publish()".
      • Register a \ref gravity::GravitySubscriber "GravitySubscriber" through \ref gravity::GravityNode::subscribe() "GravityNode::subscribe()" to recieve subscriptions.
      • Register a \ref gravity::GravitySubscriptionMonitor "GravitySubscriptionMonitor" through \ref gravity::GravityNode::setSubscriptionTimeoutMonitor() "GravityNode::setSubscriptionTimeoutMonitor()" to receive subscription timeout alerts.
  • Requests/responses can be made through the GravityNetwork. Just like data, these messages travel as \ref gravity::GravityDataProduct "GravityDataProducts".
    • Make an asynchronous request and register a \ref gravity::GravityRequestor "GravityRequestor" to receive the response through \ref gravity::GravityNode "GravityNode::request()".
    • Register a \ref gravity::GravityServiceProvider "GravityServiceProvider" through \ref gravity::GravityNode::registerService() "GravityNode::registerService()" to receive the request and send a response.
  • Heartbeats monitor the "alive" status of published data products on \ref gravity::GravityNode "GravityNodes".
    • Use \ref gravity::GravityNode::startHeartbeat() "GravityNode::startHeartbeat()" to start a heartbeat on a \ref gravity::GravityNode "GravityNode".
    • Register a \ref gravity::GravityHeartbeatListener "GravityHeartbeatListener" through \ref gravity::GravityNode::registerHeartbeatListener() "GravityNode::registerHeartbeatListener()" to receive these heartbeat updates.
  • In summary, the following interfaces be inherited to interact with the Gravity Network:
    • \ref gravity::GravitySubscriber "GravitySubscriber" to receive data subscriptions.
    • \ref gravity::GravitySubscriptionMonitor "GravitySubscriptionMonitor" to receive data timeout alerts.
    • \ref gravity::GravityRequestor "GravityRequestor" to receive a response from an asynchronous request.
    • \ref gravity::GravityServiceProvider "GravityServiceProvider" to receive a request and send a response.
    • \ref gravity::GravityHeartbeatListener "GravityHeartbeatListener" to receive information about data connection losses.
  • Gravity also contains a framework to log messages.
    • Use the static \ref gravity::Log "Log" class to create a log messages.
    • Although there are methods to create \ref gravity::Logger "Loggers", at initialization of the GravityNode a console \ref gravity::Logger "Logger" and a file \ref gravity::Logger "Logger" are created.
    • By default, the only logged messages are of \ref gravity::Log::LogLevel "LogLevel::WARNING" and above. This can be overridden in the Gravity.ini file. See the Wiki for examples.
  • TBD \ref gravity::FutureResponse "FutureResponse"
\endif

\if java

Gravity java API

  • Java table of contents
\endif