PadicoTM

Documentation

« back to PM2 home.
PadicoControl: control channel

Files

file  na-control.c
 Padico control channel.
 
file  na-group.c
 Padico PadicoControl group control.
 
file  PadicoControl-internals.h
 Internal definitions for PadicoControl.
 
file  PadicoControl.h
 

Data Structures

struct  padico_control_event_s
 
struct  padico_control_driver_s
 Interface: "PadicoControl". More...
 
struct  puk_receptacle_PadicoControl_s
 
struct  padico_control_connector_driver_s
 Interface: "PadicoConnector" Connection for PadicoControl with explicit address transfer. More...
 
struct  puk_receptacle_PadicoConnector_s
 
struct  padico_bootstrap_driver_s
 Interface: "PadicoBootstrap" Connection for PadicoControl with implicit address
More...
 
struct  puk_receptacle_PadicoBootstrap_s
 
struct  padico_control_selector_driver_s
 Interface: "ControlSelector". More...
 
struct  puk_receptacle_ControlSelector_s
 

Macros

#define padico_control_msg_add_cmd(MSG, TEXT, ...)    padico_string_catf(padico_control_msg_get_cmd(MSG), (TEXT), ##__VA_ARGS__ )
 

Typedefs

typedef struct padico_control_msg_s * padico_control_msg_t
 
typedef struct padico_control_event_s * padico_control_event_t
 

Functions

padico_control_msg_t padico_control_msg_new (void)
 create a new empty control message
 
void padico_control_msg_destroy (padico_control_msg_t msg)
 destroy a control message
 
padico_string_t padico_control_msg_get_cmd (padico_control_msg_t msg)
 
void padico_control_msg_add_part (padico_control_msg_t msg, const void *text, size_t len)
 add an attached binary part to a control message
 
int padico_control_msg_get_iovec_size (padico_control_msg_t msg)
 get the number of iovec entries in the control message
 
const struct iovec * padico_control_msg_get_iovec (padico_control_msg_t msg)
 get an iovec from the control message content; caller takes ownership of iovec and must free it
 
size_t padico_control_msg_get_size (padico_control_msg_t msg)
 get the total number of bytes in the control message
 
struct iovec padico_control_msg_get_bytes (padico_control_msg_t msg)
 get a (contiguous) copy of the content of the control message; caller takes ownership of the copy
 
padico_tasklet_t padico_control_get_event_channel (void)
 
void padico_control_gen_init_events (padico_event_listener_t l)
 Generates initial events for new subscribers to get the current state.
 
void padico_control_deliver_message (puk_instance_t controler, padico_topo_node_t from, char *cmd, size_t size)
 deliver a message from a Controler
 
void padico_control_send_ext (padico_topo_node_t node, const char *cmd, uint32_t req_id)
 
int padico_control_send_msg (padico_topo_node_t node, padico_control_msg_t msg)
 the real function to send a message on control channel- most of the time, we use a wraper, however.
 
static void padico_control_send_oneway (padico_topo_node_t node, const char *msg)
 Send a "one way" message on the control channel.
 
static void padico_control_send_async (padico_topo_node_t node, const char *cmd, padico_task_notifier_t notify, void *key)
 Send an async request on the control channel.
 
static padico_req_t padico_control_send (padico_topo_node_t node, const char *cmd)
 Send a blocking request on the control channel.
 
static padico_topo_network_t padico_control_getnetwork (void)
 Get the control channel as a network.
 
static void padico_control_event_enable (void)
 
static void padico_control_event_disable (void)
 
static void padico_control_event_flush (void)
 
static void padico_control_event_sync (void)
 
static void padico_control_event_subscribe (padico_event_listener_t l)
 
static void padico_control_event_unsubscribe (padico_event_listener_t l)
 
static void padico_control_new_node (puk_instance_t controler, padico_topo_node_t node)
 
static void padico_control_new_node_vect (puk_instance_t controler, padico_topo_node_vect_t nodes)
 
static void padico_control_plug_controler (puk_instance_t controler, puk_instance_t server)
 
static void padico_control_plug_connector (puk_component_t connector)
 
static void padico_control_plug_selector (puk_component_t selector)
 
static void padico_control_unplug_controler (puk_instance_t controler)
 
static void padico_control_unplug_connector (puk_component_t connector)
 
static void padico_control_unplug_selector (puk_component_t selector)
 
static void padico_control_delete_node (puk_instance_t controler, padico_topo_node_t node)
 
static puk_iface_t puk_iface_PadicoControl (void)
 
static struct puk_receptacle_PadicoControl_s puk_receptacle_PadicoControl_null (void)
 
static void puk_instance_indirect_PadicoControl (puk_instance_t instance, const char *label, struct puk_receptacle_PadicoControl_s *receptacle)
 
static void puk_instance_context_indirect_PadicoControl (puk_instance_t instance, const char *label, struct puk_receptacle_PadicoControl_s *receptacle)
 
static puk_facet_t puk_component_get_facet_PadicoControl (puk_component_t c, const char *label)
 
static const struct padico_control_driver_s * puk_component_get_driver_PadicoControl (puk_component_t component, const char *label)
 
static void puk_context_indirect_PadicoControl (puk_context_t context, const char *label, const struct padico_control_driver_s **driver, puk_context_t *rcontext)
 
static void puk_component_indirect_PadicoControl (puk_component_t component, const char *label, const struct padico_control_driver_s **driver, puk_context_t *context)
 
static puk_iface_t puk_iface_PadicoConnector (void)
 
static struct puk_receptacle_PadicoConnector_s puk_receptacle_PadicoConnector_null (void)
 
static void puk_instance_indirect_PadicoConnector (puk_instance_t instance, const char *label, struct puk_receptacle_PadicoConnector_s *receptacle)
 
static void puk_instance_context_indirect_PadicoConnector (puk_instance_t instance, const char *label, struct puk_receptacle_PadicoConnector_s *receptacle)
 
static puk_facet_t puk_component_get_facet_PadicoConnector (puk_component_t c, const char *label)
 
static const struct padico_control_connector_driver_s * puk_component_get_driver_PadicoConnector (puk_component_t component, const char *label)
 
static void puk_context_indirect_PadicoConnector (puk_context_t context, const char *label, const struct padico_control_connector_driver_s **driver, puk_context_t *rcontext)
 
static void puk_component_indirect_PadicoConnector (puk_component_t component, const char *label, const struct padico_control_connector_driver_s **driver, puk_context_t *context)
 
static puk_iface_t puk_iface_PadicoBootstrap (void)
 
static struct puk_receptacle_PadicoBootstrap_s puk_receptacle_PadicoBootstrap_null (void)
 
static void puk_instance_indirect_PadicoBootstrap (puk_instance_t instance, const char *label, struct puk_receptacle_PadicoBootstrap_s *receptacle)
 
static void puk_instance_context_indirect_PadicoBootstrap (puk_instance_t instance, const char *label, struct puk_receptacle_PadicoBootstrap_s *receptacle)
 
static puk_facet_t puk_component_get_facet_PadicoBootstrap (puk_component_t c, const char *label)
 
static const struct padico_bootstrap_driver_s * puk_component_get_driver_PadicoBootstrap (puk_component_t component, const char *label)
 
static void puk_context_indirect_PadicoBootstrap (puk_context_t context, const char *label, const struct padico_bootstrap_driver_s **driver, puk_context_t *rcontext)
 
static void puk_component_indirect_PadicoBootstrap (puk_component_t component, const char *label, const struct padico_bootstrap_driver_s **driver, puk_context_t *context)
 
static puk_iface_t puk_iface_ControlSelector (void)
 
static struct puk_receptacle_ControlSelector_s puk_receptacle_ControlSelector_null (void)
 
static void puk_instance_indirect_ControlSelector (puk_instance_t instance, const char *label, struct puk_receptacle_ControlSelector_s *receptacle)
 
static void puk_instance_context_indirect_ControlSelector (puk_instance_t instance, const char *label, struct puk_receptacle_ControlSelector_s *receptacle)
 
static puk_facet_t puk_component_get_facet_ControlSelector (puk_component_t c, const char *label)
 
static const struct padico_control_selector_driver_s * puk_component_get_driver_ControlSelector (puk_component_t component, const char *label)
 
static void puk_context_indirect_ControlSelector (puk_context_t context, const char *label, const struct padico_control_selector_driver_s **driver, puk_context_t *rcontext)
 
static void puk_component_indirect_ControlSelector (puk_component_t component, const char *label, const struct padico_control_selector_driver_s **driver, puk_context_t *context)
 

Detailed Description

Macro Definition Documentation

◆ padico_control_msg_add_cmd

#define padico_control_msg_add_cmd (   MSG,
  TEXT,
  ... 
)     padico_string_catf(padico_control_msg_get_cmd(MSG), (TEXT), ##__VA_ARGS__ )

Definition at line 65 of file PadicoControl.h.

Typedef Documentation

◆ padico_control_event_t

◆ padico_control_msg_t

Function Documentation

◆ padico_control_delete_node()

◆ padico_control_deliver_message()

void padico_control_deliver_message ( puk_instance_t  controler,
padico_topo_node_t  from,
char *  cmd,
size_t  size 
)

deliver a message from a Controler

deliver a message from a Controler

Note
this function takes ownership of data pointed to by 'msg'

Definition at line 388 of file na-control.c.

References assert(), padico_control_event_s::cmd, done, event, NULL, padico_control_event_s::PADICO_CONTROL_EVENT_PROCESSING, padico_control_get_event_channel(), padico_tasklet_schedule(), and size.

Referenced by padico_control_send_ext(), router_message_process(), ssh2_control_read_callback(), and sysio_control_read_callback().

◆ padico_control_event_disable()

◆ padico_control_event_enable()

◆ padico_control_event_flush()

◆ padico_control_event_subscribe()

◆ padico_control_event_sync()

◆ padico_control_event_unsubscribe()

◆ padico_control_gen_init_events()

void padico_control_gen_init_events ( padico_event_listener_t  l)

Generates initial events for new subscribers to get the current state.

Precondition
event channel disabled

Definition at line 414 of file na-control.c.

References padico_control_event_s::controler, done, e, event, padico_control_event_s::kind, na_control, nodes, NULL, padico_control_event_s::PADICO_CONTROL_EVENT_INIT_CONTROLER, and padico_topo_node_vect_t.

Referenced by padico_control_event_subscribe().

◆ padico_control_get_event_channel()

◆ padico_control_getnetwork()

static padico_topo_network_t padico_control_getnetwork ( void  )
inlinestatic

Get the control channel as a network.

Definition at line 124 of file PadicoControl.h.

References done, NULL, and padico_topo_network_getbyid().

◆ padico_control_msg_add_part()

void padico_control_msg_add_part ( padico_control_msg_t  msg,
const void *  text,
size_t  len 
)
extern

add an attached binary part to a control message

Definition at line 189 of file na-control.c.

References padico_control_msg_s::content, done, len, padico_control_msg_s::offset, and padico_control_msg_add_cmd.

Referenced by bench_control_send(), psp_control_pack(), and router_message_process().

◆ padico_control_msg_destroy()

void padico_control_msg_destroy ( padico_control_msg_t  msg)
extern

destroy a control message

Definition at line 173 of file na-control.c.

References padico_control_msg_s::content, done, i, NULL, and padico_control_msg_s::v.

Referenced by padico_control_send_ext(), and padico_control_send_msg().

◆ padico_control_msg_get_bytes()

struct iovec padico_control_msg_get_bytes ( padico_control_msg_t  msg)
extern

get a (contiguous) copy of the content of the control message; caller takes ownership of the copy

Definition at line 229 of file na-control.c.

References done, NULL, padico_control_msg_get_iovec(), padico_control_msg_get_size(), size, and v.

Referenced by padico_control_send_ext(), and router_control_send_common().

◆ padico_control_msg_get_cmd()

padico_string_t padico_control_msg_get_cmd ( padico_control_msg_t  msg)
extern

get a pointer to the cmd part

Definition at line 244 of file na-control.c.

References padico_control_msg_s::content, and done.

◆ padico_control_msg_get_iovec()

const struct iovec * padico_control_msg_get_iovec ( padico_control_msg_t  msg)
extern

get an iovec from the control message content; caller takes ownership of iovec and must free it

Definition at line 205 of file na-control.c.

References padico_control_msg_s::content, done, i, n, NULL, s, padico_control_msg_s::size, v, and padico_control_msg_s::v.

Referenced by padico_control_msg_get_bytes(), ssh2_control_send_common(), and sysio_control_send_common().

◆ padico_control_msg_get_iovec_size()

int padico_control_msg_get_iovec_size ( padico_control_msg_t  msg)
extern

get the number of iovec entries in the control message

Definition at line 199 of file na-control.c.

References assert(), padico_control_msg_s::content, done, NULL, and padico_control_msg_s::v.

Referenced by ssh2_control_send_common(), and sysio_control_send_common().

◆ padico_control_msg_get_size()

size_t padico_control_msg_get_size ( padico_control_msg_t  msg)
extern

get the total number of bytes in the control message

Definition at line 223 of file na-control.c.

References assert(), NULL, padico_control_msg_s::size, and padico_control_msg_s::v.

Referenced by padico_control_msg_get_bytes(), ssh2_control_send_common(), and sysio_control_send_common().

◆ padico_control_msg_new()

◆ padico_control_new_node()

◆ padico_control_new_node_vect()

static void padico_control_new_node_vect ( puk_instance_t  controler,
padico_topo_node_vect_t  nodes 
)
inlinestatic

◆ padico_control_plug_connector()

◆ padico_control_plug_controler()

◆ padico_control_plug_selector()

◆ padico_control_send()

◆ padico_control_send_async()

static void padico_control_send_async ( padico_topo_node_t  node,
const char *  cmd,
padico_task_notifier_t  notify,
void *  key 
)
inlinestatic

Send an async request on the control channel.

Definition at line 108 of file PadicoControl.h.

References done, key, node, notify, padico_control_send_ext(), padico_tm_req_new(), and req.

Referenced by control_twostep_select_controler(), remote_control_node_send(), and sfrfw_launch_gateway().

◆ padico_control_send_ext()

◆ padico_control_send_msg()

◆ padico_control_send_oneway()

◆ padico_control_unplug_connector()

◆ padico_control_unplug_controler()

◆ padico_control_unplug_selector()

◆ puk_component_get_driver_ControlSelector()

static const struct padico_control_selector_driver_s * puk_component_get_driver_ControlSelector ( puk_component_t  component,
const char *  label 
)
inlinestatic

Definition at line 389 of file PadicoControl.h.

Referenced by padico_control_send_msg().

◆ puk_component_get_driver_PadicoBootstrap()

static const struct padico_bootstrap_driver_s * puk_component_get_driver_PadicoBootstrap ( puk_component_t  component,
const char *  label 
)
inlinestatic

Definition at line 378 of file PadicoControl.h.

Referenced by padico_bootstrap_indirect().

◆ puk_component_get_driver_PadicoConnector()

static const struct padico_control_connector_driver_s * puk_component_get_driver_PadicoConnector ( puk_component_t  component,
const char *  label 
)
inlinestatic

◆ puk_component_get_driver_PadicoControl()

static const struct padico_control_driver_s * puk_component_get_driver_PadicoControl ( puk_component_t  component,
const char *  label 
)
inlinestatic

◆ puk_component_get_facet_ControlSelector()

static puk_facet_t puk_component_get_facet_ControlSelector ( puk_component_t  c,
const char *  label 
)
inlinestatic

Definition at line 389 of file PadicoControl.h.

◆ puk_component_get_facet_PadicoBootstrap()

static puk_facet_t puk_component_get_facet_PadicoBootstrap ( puk_component_t  c,
const char *  label 
)
inlinestatic

Definition at line 378 of file PadicoControl.h.

◆ puk_component_get_facet_PadicoConnector()

static puk_facet_t puk_component_get_facet_PadicoConnector ( puk_component_t  c,
const char *  label 
)
inlinestatic

Definition at line 364 of file PadicoControl.h.

◆ puk_component_get_facet_PadicoControl()

static puk_facet_t puk_component_get_facet_PadicoControl ( puk_component_t  c,
const char *  label 
)
inlinestatic

Definition at line 342 of file PadicoControl.h.

◆ puk_component_indirect_ControlSelector()

static void puk_component_indirect_ControlSelector ( puk_component_t  component,
const char *  label,
const struct padico_control_selector_driver_s **  driver,
puk_context_t *  context 
)
inlinestatic

Definition at line 389 of file PadicoControl.h.

◆ puk_component_indirect_PadicoBootstrap()

static void puk_component_indirect_PadicoBootstrap ( puk_component_t  component,
const char *  label,
const struct padico_bootstrap_driver_s **  driver,
puk_context_t *  context 
)
inlinestatic

Definition at line 378 of file PadicoControl.h.

◆ puk_component_indirect_PadicoConnector()

static void puk_component_indirect_PadicoConnector ( puk_component_t  component,
const char *  label,
const struct padico_control_connector_driver_s **  driver,
puk_context_t *  context 
)
inlinestatic

Definition at line 364 of file PadicoControl.h.

◆ puk_component_indirect_PadicoControl()

static void puk_component_indirect_PadicoControl ( puk_component_t  component,
const char *  label,
const struct padico_control_driver_s **  driver,
puk_context_t *  context 
)
inlinestatic

Definition at line 342 of file PadicoControl.h.

◆ puk_context_indirect_ControlSelector()

static void puk_context_indirect_ControlSelector ( puk_context_t  context,
const char *  label,
const struct padico_control_selector_driver_s **  driver,
puk_context_t *  rcontext 
)
inlinestatic

Definition at line 389 of file PadicoControl.h.

◆ puk_context_indirect_PadicoBootstrap()

static void puk_context_indirect_PadicoBootstrap ( puk_context_t  context,
const char *  label,
const struct padico_bootstrap_driver_s **  driver,
puk_context_t *  rcontext 
)
inlinestatic

Definition at line 378 of file PadicoControl.h.

◆ puk_context_indirect_PadicoConnector()

static void puk_context_indirect_PadicoConnector ( puk_context_t  context,
const char *  label,
const struct padico_control_connector_driver_s **  driver,
puk_context_t *  rcontext 
)
inlinestatic

Definition at line 364 of file PadicoControl.h.

◆ puk_context_indirect_PadicoControl()

static void puk_context_indirect_PadicoControl ( puk_context_t  context,
const char *  label,
const struct padico_control_driver_s **  driver,
puk_context_t *  rcontext 
)
inlinestatic

Definition at line 342 of file PadicoControl.h.

◆ puk_iface_ControlSelector()

static puk_iface_t puk_iface_ControlSelector ( void  )
inlinestatic

Definition at line 389 of file PadicoControl.h.

◆ puk_iface_PadicoBootstrap()

static puk_iface_t puk_iface_PadicoBootstrap ( void  )
inlinestatic

Definition at line 378 of file PadicoControl.h.

Referenced by ns_inet_default_selector_host(), and padico_bootstrap_indirect().

◆ puk_iface_PadicoConnector()

◆ puk_iface_PadicoControl()

static puk_iface_t puk_iface_PadicoControl ( void  )
inlinestatic

Definition at line 342 of file PadicoControl.h.

◆ puk_instance_context_indirect_ControlSelector()

static void puk_instance_context_indirect_ControlSelector ( puk_instance_t  instance,
const char *  label,
struct puk_receptacle_ControlSelector_s *  receptacle 
)
inlinestatic

Definition at line 389 of file PadicoControl.h.

◆ puk_instance_context_indirect_PadicoBootstrap()

static void puk_instance_context_indirect_PadicoBootstrap ( puk_instance_t  instance,
const char *  label,
struct puk_receptacle_PadicoBootstrap_s *  receptacle 
)
inlinestatic

Definition at line 378 of file PadicoControl.h.

Referenced by secondary_connector_instantiate().

◆ puk_instance_context_indirect_PadicoConnector()

static void puk_instance_context_indirect_PadicoConnector ( puk_instance_t  instance,
const char *  label,
struct puk_receptacle_PadicoConnector_s *  receptacle 
)
inlinestatic

Definition at line 364 of file PadicoControl.h.

◆ puk_instance_context_indirect_PadicoControl()

static void puk_instance_context_indirect_PadicoControl ( puk_instance_t  instance,
const char *  label,
struct puk_receptacle_PadicoControl_s *  receptacle 
)
inlinestatic

Definition at line 342 of file PadicoControl.h.

◆ puk_instance_indirect_ControlSelector()

static void puk_instance_indirect_ControlSelector ( puk_instance_t  instance,
const char *  label,
struct puk_receptacle_ControlSelector_s *  receptacle 
)
inlinestatic

Definition at line 389 of file PadicoControl.h.

◆ puk_instance_indirect_PadicoBootstrap()

static void puk_instance_indirect_PadicoBootstrap ( puk_instance_t  instance,
const char *  label,
struct puk_receptacle_PadicoBootstrap_s *  receptacle 
)
inlinestatic

Definition at line 378 of file PadicoControl.h.

Referenced by padico_bootstrap_indirect().

◆ puk_instance_indirect_PadicoConnector()

◆ puk_instance_indirect_PadicoControl()

static void puk_instance_indirect_PadicoControl ( puk_instance_t  instance,
const char *  label,
struct puk_receptacle_PadicoControl_s *  receptacle 
)
inlinestatic

Definition at line 342 of file PadicoControl.h.

Referenced by padico_control_send_msg(), and sysio_control_bootstrap_acceptor().

◆ puk_receptacle_ControlSelector_null()

static struct puk_receptacle_ControlSelector_s puk_receptacle_ControlSelector_null ( void  )
inlinestatic

Definition at line 389 of file PadicoControl.h.

◆ puk_receptacle_PadicoBootstrap_null()

static struct puk_receptacle_PadicoBootstrap_s puk_receptacle_PadicoBootstrap_null ( void  )
inlinestatic

Definition at line 378 of file PadicoControl.h.

◆ puk_receptacle_PadicoConnector_null()

static struct puk_receptacle_PadicoConnector_s puk_receptacle_PadicoConnector_null ( void  )
inlinestatic

Definition at line 364 of file PadicoControl.h.

◆ puk_receptacle_PadicoControl_null()

static struct puk_receptacle_PadicoControl_s puk_receptacle_PadicoControl_null ( void  )
inlinestatic

Definition at line 342 of file PadicoControl.h.