Loading...
Searching...
No Matches
L4::Server_object_x< Derived, IFACE, BASE > Struct Template Reference
The L4Re IPC Framework » Server-Side IPC framework

Helper class to implement p_dispatch based server objects. More...

`#include <ipc_server>`

Inheritance diagram for L4::Server_object_x< Derived, IFACE, BASE >:
Collaboration diagram for L4::Server_object_x< Derived, IFACE, BASE >:

## Public Member Functions

int | dispatch (l4_umword_t r, L4::Ipc::Iostream &ios)
| Implementation forwarding to p_dispatch().
Public Member Functions inherited from L4::Server_object
l4_msgtag_t | dispatch (l4_msgtag_t tag, unsigned rights, l4_utcb_t *utcb) override
| The abstract handler for client requests to the object.
Public Member Functions inherited from L4::Epiface
| Epiface ()
| Make a server object.
virtual | ~Epiface ()=0
| Destroy the object.
Stored_cap | obj_cap () const
| Get the capability to the kernel object belonging to this object.
Server_iface * | server_iface () const
| Get pointer to server interface at which the object is currently registered.
int | set_server (Server_iface *srv, Cap< void > cap, bool managed=false)
| Set server registration info for the object.
void | set_obj_cap (Cap< void > const &cap)
| Deprecated server registration function.
Public Member Functions inherited from L4::Server_object_t< IFACE, L4::Server_object >
L4::Server_object::Demand | get_buffer_demand () const override
int | dispatch_meta_request (L4::Ipc::Iostream &ios)
| Implementation of the meta protocol based on IFACE.

## Additional Inherited Members

Public Types inherited from L4::Epiface
typedef Ipc_svr::Server_iface | Server_iface
| Type for abstract server interface.
typedef Ipc_svr::Server_iface::Demand | Demand
| Type for server-side receive buffer demand.
Public Types inherited from L4::Server_object_t< IFACE, L4::Server_object >
typedef IFACE | Interface
| Data type of the IPC interface definition.
Static Public Member Functions inherited from L4::Server_object_t< IFACE, L4::Server_object >
static int | proto_dispatch (THIS *self, l4_umword_t rights, L4::Ipc::Iostream &ios)
| Implementation of protocol-based dispatch for this server object.

## Detailed Description

template<typename Derived, typename IFACE, typename BASE = L4::Server_object>
struct L4::Server_object_x< Derived, IFACE, BASE >

Helper class to implement p_dispatch based server objects.

Template Parameters

  Derived | The data type of your server object class.
  IFACE | The data type providing the interface definition for the object.
  BASE | Optional data-type of the base server object (usually L4::Server_object)

This class implements the standard dispatch() function of L4::Server_object and forwards incoming messages to a set of overloaded p_dispatch() functions. There must be a p_dispatch() function in Derived for each interface provided by IFACE with the signature

int p_dispatch(Iface *, unsigned rights, L4::Ipc::Iostream &)
L4::Ipc::Iostream
Input/Output stream for IPC [un]marshalling.
Definition ipc_stream:790

that is called for messages with protocol == Iface::Protocol.

Example signature for L4Re::Dataspace is:

int p_dispatch(L4Re::Dataspace *, unsigned, L4::Ipc::Iostream &)
L4Re::Dataspace
Interface for memory-like objects.
Definition dataspace:53

Definition at line 143 of file ipc_server.

The documentation for this struct was generated from the following file:

- l4/cxx/ipc_server