Open Lighting Architecture  0.9.2
 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::RpcChannel 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.

Public Member Functions

 RpcChannel (RpcService *service, ola::io::ConnectedDescriptor *descriptor, ExportMap *export_map=NULL)
 ~RpcChannel ()
 Destructor.
void SetService (RpcService *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 google::protobuf::MethodDescriptor *method, RpcController *controller, const google::protobuf::Message *request, google::protobuf::Message *response, SingleUseCallback0< void > *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::RpcChannel::RpcChannel ( RpcService service,
ola::io::ConnectedDescriptor descriptor,
ExportMap export_map = NULL 
)

@brief Create a new RpcChannel.

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::RpcChannel::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::RpcChannel::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::RpcChannel::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 RpcChannel object. This means you can't delete the RpcChannel object from within the called, you'll need to queue it up an delete it later.
void ola::rpc::RpcChannel::SetService ( RpcService 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: