librpc
Macros | Typedefs | Enumerations | Functions
server.h File Reference
#include <stdbool.h>
#include <rpc/service.h>
#include <rpc/connection.h>
Include dependency graph for server.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define RPC_SERVER_HANDLER(_fn, _arg)
 

Typedefs

typedef struct rpc_server * rpc_server_t
 
typedef enum rpc_server_event rpc_server_event_t
 
typedef void(^ rpc_server_ev_handler_t) (_Nonnull rpc_connection_t conn, rpc_server_event_t event)
 

Enumerations

enum  rpc_server_event { RPC_SERVER_CLIENT_CONNECT, RPC_SERVER_CLIENT_DISCONNECT }
 

Functions

_Nullable rpc_server_t rpc_server_create (const char *_Nonnull uri, _Nonnull rpc_context_t context)
 
_Nullable rpc_server_t rpc_server_find (const char *_Nonnull uri, _Nonnull rpc_context_t context)
 
void rpc_server_pause (_Nonnull rpc_server_t server)
 
_Nullable rpc_server_t rpc_server_create_ex (const char *_Nonnull uri, _Nonnull rpc_context_t context, _Nullable rpc_object_t params)
 
void rpc_server_resume (_Nonnull rpc_server_t server)
 
void rpc_server_broadcast_event (_Nonnull rpc_server_t server, const char *_Nullable path, const char *_Nullable interface, const char *_Nonnull name, _Nullable rpc_object_t args)
 
void rpc_server_set_event_handler (_Nonnull rpc_server_t server, _Nullable rpc_server_ev_handler_t handler)
 
int rpc_server_close (_Nonnull rpc_server_t server)
 
int rpc_server_socket_activate (_Nonnull rpc_context_t context, _Nonnull rpc_server_t *_Nonnull *_Nonnull servers, _Nullable rpc_object_t *_Nullable rest)
 

Detailed Description

RPC server API.

Definition in file server.h.

Macro Definition Documentation

◆ RPC_SERVER_HANDLER

#define RPC_SERVER_HANDLER (   _fn,
  _arg 
)
Value:
^(rpc_connection_t _conn, rpc_server_event_t _event) { \
_fn(_arg, _conn, _event); \
}
struct rpc_connection * rpc_connection_t
Definition: connection.h:94

Converts function pointer to a rpc_server_ev_handler_t block type.

Examples:
server.c.

Definition at line 70 of file server.h.

Typedef Documentation

◆ rpc_server_ev_handler_t

typedef void(^ rpc_server_ev_handler_t) (_Nonnull rpc_connection_t conn, rpc_server_event_t event)

Definition of RPC server event handler block type.

Definition at line 64 of file server.h.

◆ rpc_server_t

typedef struct rpc_server* rpc_server_t

RPC server pointer structure definition.

Definition at line 53 of file server.h.

Function Documentation

◆ rpc_server_broadcast_event()

void rpc_server_broadcast_event ( _Nonnull rpc_server_t  server,
const char *_Nullable  path,
const char *_Nullable  interface,
const char *_Nonnull  name,
_Nullable rpc_object_t  args 
)

Broadcasts an event of a given name among its subscribers.

Parameters
serverServer handle
nameName of an event to be broadcasted
argsEvent arguments
Examples:
server.c.

◆ rpc_server_close()

int rpc_server_close ( _Nonnull rpc_server_t  server)

Closes a given RPC server.

Parameters
serverServer handle to be closed
Returns
0 on successful teardown
Examples:
fd-transport.c, loopback.c, pack-unpack.c, and server.c.

◆ rpc_server_create()

_Nullable rpc_server_t rpc_server_create ( const char *_Nonnull  uri,
_Nonnull rpc_context_t  context 
)

Creates a server instance listening on a given URI.

Parameters
uriURI to listen on
contextRPC context for a server instance
Returns
Server handle
Examples:
fd-server.c, fd-transport.c, loopback.c, pack-unpack.c, server.c, shm-server.c, and validation.c.

◆ rpc_server_create_ex()

_Nullable rpc_server_t rpc_server_create_ex ( const char *_Nonnull  uri,
_Nonnull rpc_context_t  context,
_Nullable rpc_object_t  params 
)

Creates a server instance listening on a given URI.

Parameters
uriURI to listen on
contextRPC context for a server instance
paramsAdditional parameters for a transport
Returns
Server handle

◆ rpc_server_find()

_Nullable rpc_server_t rpc_server_find ( const char *_Nonnull  uri,
_Nonnull rpc_context_t  context 
)

Finds a server instance if it exists for a context.

Parameters
uriServer URI to check
contextRPC context for a server instance
Returns
Server handle or NULL

◆ rpc_server_pause()

void rpc_server_pause ( _Nonnull rpc_server_t  server)

Stops accepting requests for the server.

Server instance keeps all the incoming requests queued and on hold until rpc_server_resume is called.

Parameters
serverServer handle

◆ rpc_server_resume()

void rpc_server_resume ( _Nonnull rpc_server_t  server)

Starts accepting requests by the server.

Server instance keeps all the incoming requests queued and on hold until this function is called.

Parameters
serverServer handle
Examples:
fd-server.c, fd-transport.c, loopback.c, pack-unpack.c, server.c, and shm-server.c.

◆ rpc_server_set_event_handler()

void rpc_server_set_event_handler ( _Nonnull rpc_server_t  server,
_Nullable rpc_server_ev_handler_t  handler 
)

Creates an event handler internal to a server for an event of a given name.

Parameters
handler
Examples:
server.c.

◆ rpc_server_socket_activate()

int rpc_server_socket_activate ( _Nonnull rpc_context_t  context,
_Nonnull rpc_server_t *_Nonnull *_Nonnull  servers,
_Nullable rpc_object_t *_Nullable  rest 
)

Sets up some number of servers using systemd socket activation information.

Parameters
servers
rest
Returns
Number of servers created or -1 on error