libtransistor
A userland library for the Nintendo Switch
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
Data Structures | Macros | Typedefs | Enumerations | Functions
ipcserver.h File Reference

IPC Server data structures and functions. More...

#include <libtransistor/types.h>
#include <libtransistor/ipc.h>
#include <libtransistor/waiter.h>
Include dependency graph for ipcserver.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ipc_server_object_t
 Represents the server side of an IPC object. More...
 
struct  ipc_server_domain_t
 Represents the server side of an IPC object domain. More...
 
struct  ipc_server_session_t
 
struct  ipc_server_port_t
 
struct  ipc_server_t
 

Macros

#define MAX_SERVICE_PORTS   63
 
#define MAX_SERVICE_SESSIONS   63
 Maximum number of sessions that can be connected to an IPC server.
 
#define MAX_DOMAIN_OBJECTS   512
 Maximum number of objects per domain.
 

Typedefs

typedef struct ipc_server_object_t ipc_server_object_t
 
typedef struct ipc_server_domain_t ipc_server_domain_t
 
typedef struct ipc_server_session_t ipc_server_session_t
 
typedef result_t(* ipc_server_object_factory_t )(ipc_server_object_t **obj, void *userdata)
 
typedef struct ipc_server_port_t ipc_server_port_t
 
typedef struct ipc_server_t ipc_server_t
 

Enumerations

enum  ipc_server_session_state_t {
  IPC_SESSION_STATE_INVALID, IPC_SESSION_STATE_INITIALIZING, IPC_SESSION_STATE_LISTENING, IPC_SESSION_STATE_PROCESSING,
  IPC_SESSION_STATE_ERRORED
}
 

Functions

result_t ipc_server_create (ipc_server_t *srv, waiter_t *waiter)
 
result_t ipc_server_create_ex (ipc_server_t *srv, waiter_t *waiter, uint32_t max_ports, uint32_t max_sessions, size_t pointer_buffer_size)
 
result_t ipc_server_add_port (ipc_server_t *srv, port_h port, ipc_server_object_factory_t object_factory, void *userdata)
 
result_t ipc_server_create_session (ipc_server_t *srv, session_h server_side, session_h client_side, ipc_server_object_t *object)
 
result_t ipc_server_accept_session (ipc_server_t *srv, ipc_server_port_t *port)
 
result_t ipc_server_destroy (ipc_server_t *srv)
 
result_t ipc_server_object_register (ipc_server_object_t *owner, ipc_server_object_t *new_object)
 
result_t ipc_server_object_reply (ipc_server_object_t *obj, const ipc_response_t *rs)
 
result_t ipc_server_object_close (ipc_server_object_t *obj)
 
result_t ipc_server_domain_add_object (ipc_server_domain_t *domain, ipc_server_object_t *object)
 
result_t ipc_server_domain_get_object (ipc_server_domain_t *domain, uint32_t object_id, ipc_server_object_t **object)
 
result_t ipc_server_domain_destroy (ipc_server_domain_t *domain)
 
result_t ipc_server_session_receive (ipc_server_session_t *sess)
 
result_t ipc_server_session_close (ipc_server_session_t *sess)
 

Detailed Description

IPC Server data structures and functions.

Enumeration Type Documentation

Enumerator
IPC_SESSION_STATE_INVALID 

Session does not exist.

IPC_SESSION_STATE_INITIALIZING 

Session has been allocated but is still in the process of being initialized.

IPC_SESSION_STATE_LISTENING 

Session is waiting for incoming IPC messages.

IPC_SESSION_STATE_PROCESSING 

Session is waiting for ipc_server_object_reply or ipc_server_object_close to be called.

IPC_SESSION_STATE_ERRORED 

Session has encountered an error.