Mir
Public Member Functions | List of all members
mir::client::rpc::StreamSocketTransport Class Reference

#include <stream_socket_transport.h>

Inheritance diagram for mir::client::rpc::StreamSocketTransport:
[legend]

Public Member Functions

 StreamSocketTransport (Fd const &fd)
 
 StreamSocketTransport (std::string const &socket_path)
 
void register_observer (std::shared_ptr< Observer > const &observer) override
 Register an IO observer. More...
 
void unregister_observer (std::shared_ptr< Observer > const &observer) override
 Unregister a previously-registered observer. More...
 
void receive_data (void *buffer, size_t bytes_requested) override
 Read data from the server. More...
 
void receive_data (void *buffer, size_t bytes_requested, std::vector< Fd > &fds) override
 Read data and file descriptors from the server. More...
 
void send_message (std::vector< uint8_t > const &buffer, std::vector< mir::Fd > const &fds) override
 Write message to the server. More...
 
Fd watch_fd () const override
 Get a poll()able file descriptor. More...
 
bool dispatch (mir::dispatch::FdEvents event) override
 Dispatch one pending event. More...
 
mir::dispatch::FdEvents relevant_events () const override
 The set of file-descriptor events this Dispatchable handles. More...
 
- Public Member Functions inherited from mir::client::rpc::StreamTransport
virtual ~StreamTransport ()=default
 
 StreamTransport ()=default
 
 StreamTransport (StreamTransport const &)=delete
 
StreamTransportoperator= (StreamTransport const &)=delete
 
- Public Member Functions inherited from mir::dispatch::Dispatchable
 Dispatchable ()=default
 
virtual ~Dispatchable ()=default
 
Dispatchableoperator= (Dispatchable const &)=delete
 
 Dispatchable (Dispatchable const &)=delete
 

Constructor & Destructor Documentation

mir::client::rpc::StreamSocketTransport::StreamSocketTransport ( mir::Fd const &  fd)
mir::client::rpc::StreamSocketTransport::StreamSocketTransport ( std::string const &  socket_path)

Member Function Documentation

bool mir::client::rpc::StreamSocketTransport::dispatch ( mir::dispatch::FdEvents  events)
overridevirtual

Dispatch one pending event.

Parameters
[in]eventThe set of events current on the file-descriptor
Returns
False iff no more events will be produced by this Dispatchable. Dispatch should no longer be called.
Note
This will dispatch at most one event. If there are multiple events specified in event (eg: readable | remote_closed) then dispatch will process only one.
It is harmless to call dispatch() with an event that does not contain any of the events from relevant_events(). The function will do nothing in such a case.
An implementation of dispatch() MUST handle FdEvent::error, if only to return false and terminate further event dispatch.

Implements mir::dispatch::Dispatchable.

void mir::client::rpc::StreamSocketTransport::receive_data ( void *  buffer,
size_t  bytes_requested 
)
overridevirtual

Read data from the server.

Parameters
[out]bufferBuffer to read into
[in]bytes_requestedNumber of bytes to read
Exceptions
Astd::runtime_error if it is not possible to read read_bytes bytes from the server.
Note
This provides stream semantics - message boundaries are not preserved.

Implements mir::client::rpc::StreamTransport.

void mir::client::rpc::StreamSocketTransport::receive_data ( void *  buffer,
size_t  bytes_requested,
std::vector< Fd > &  fds 
)
overridevirtual

Read data and file descriptors from the server.

Parameters
[out]bufferBuffer to read into
[in]bytes_requestedNumber of bytes to read
[in,out]fdsFile descriptors received in this read. The value of fds.size() determines the number of file descriptors to receive.
Exceptions
Astd::runtime_error if it is not possible to read read_bytes bytes from the server or if it is not possible to read fds.size() file descriptors from the server.
Note
This provides stream semantics - message boundaries are not preserved.

Implements mir::client::rpc::StreamTransport.

void mir::client::rpc::StreamSocketTransport::register_observer ( std::shared_ptr< Observer > const &  observer)
overridevirtual

Register an IO observer.

Parameters
[in]observer

Implements mir::client::rpc::StreamTransport.

md::FdEvents mir::client::rpc::StreamSocketTransport::relevant_events ( ) const
overridevirtual

The set of file-descriptor events this Dispatchable handles.

Implements mir::dispatch::Dispatchable.

void mir::client::rpc::StreamSocketTransport::send_message ( std::vector< uint8_t > const &  buffer,
std::vector< mir::Fd > const &  fds 
)
overridevirtual

Write message to the server.

Parameters
[in]bufferData to send
[in]fdsFds to send
Exceptions
Astd::runtime_error if it is not possible to write the full contents of buffer to the server.

Implements mir::client::rpc::StreamTransport.

void mir::client::rpc::StreamSocketTransport::unregister_observer ( std::shared_ptr< Observer > const &  observer)
overridevirtual

Unregister a previously-registered observer.

Parameters
[in]observer.This object must be managed by one of the shared_ptrs previously registered via register_observer().

Implements mir::client::rpc::StreamTransport.

mir::Fd mir::client::rpc::StreamSocketTransport::watch_fd ( ) const
overridevirtual

Get a poll()able file descriptor.

Returns
A file descriptor usable with poll() or equivalent function calls. relevant_events() contains the set of event types to watch for.

Implements mir::dispatch::Dispatchable.


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

Copyright © 2012-2015 Canonical Ltd.
Generated on Thu Oct 8 16:20:16 UTC 2015