Open Lighting Architecture
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Attributes | List of all members
ola::rpc::StreamRpcChannel Class Reference

Detailed Description

The RPC channel used to communicate between the client and the server. This implementation runs over a ConnectedDescriptor which means it can be used over TCP or pipes.

Inherits RpcChannel.

Public Member Functions

 StreamRpcChannel (Service *service, ola::io::ConnectedDescriptor *descriptor, ExportMap *export_map=NULL)
 ~StreamRpcChannel ()
 Destructor.
void SetService (Service *service)
 Set the Service to use to handle incoming requests.
bool PendingRPCs () const
 Check if there are any pending RPCs on the channel. Pending RPCs are those where a request has been sent, but no reply has been received.
void DescriptorReady ()
 Called when new data arrives on the descriptor.
void SetChannelCloseHandler (SingleUseCallback0< void > *callback)
 Set the Callback to be run when the channel fails. The callback will be invoked if the descriptor is closed, or if writes to the descriptor fail.
void CallMethod (const MethodDescriptor *method, RpcController *controller, const Message *request, Message *response, google::protobuf::Closure *done)
 Invoke an RPC method on this channel.
void RequestComplete (OutstandingRequest *request)
 Invoked by the RPC completion handler when the server side response is ready.

Static Public Attributes

static const unsigned int PROTOCOL_VERSION = 1
 the RPC protocol version.

Constructor & Destructor Documentation

ola::rpc::StreamRpcChannel::StreamRpcChannel ( Service *  service,
ola::io::ConnectedDescriptor descriptor,
ExportMap export_map = NULL 
)

@brief Create a new StreamRpcChannel.

Parameters
servicethe Service to use to handle incoming requests. Ownership is not transferred.
descriptorthe descriptor to use for reading/writing data. The caller is responsible for registering the descriptor with the SelectServer. Ownership of the descriptor is not transferred.
export_mapthe ExportMap to use for stats

Member Function Documentation

bool ola::rpc::StreamRpcChannel::PendingRPCs ( ) const
inline

Check if there are any pending RPCs on the channel. Pending RPCs are those where a request has been sent, but no reply has been received.

Returns
true if there is one or more pending RPCs.
void ola::rpc::StreamRpcChannel::RequestComplete ( OutstandingRequest request)

Invoked by the RPC completion handler when the server side response is ready.

Parameters
requestthe OutstandingRequest that is now complete.
void ola::rpc::StreamRpcChannel::SetChannelCloseHandler ( SingleUseCallback0< void > *  callback)

Set the Callback to be run when the channel fails. The callback will be invoked if the descriptor is closed, or if writes to the descriptor fail.

Parameters
callbackthe callback to run when the channel fails.
Note
The callback will be run from the call stack of the StreamRpcChannel object. This means you can't delete the StreamRpcChannel object from within the called, you'll need to queue it up an delete it later.
void ola::rpc::StreamRpcChannel::SetService ( Service *  service)
inline

Set the Service to use to handle incoming requests.

Parameters
servicethe new Service to use, ownership is not transferred.

The documentation for this class was generated from the following files: