![]() | ![]() | ![]() | Tentacles Reference Manual | ![]() |
---|
tnt-tcp-io —
#define TNT_MESSAGE_FLAGS_SIZE #define TNT_MESSAGE_TYPE_SIZE #define TNT_MESSAGE_TTL_SIZE #define TNT_MESSAGE_SIGNATURE_SIZE_SIZE #define TNT_MESSAGE_PAYLOAD_SIZE_SIZE #define TNT_MESSAGE_DATA_BLOCK_SIZE_SIZE #define TNT_DATA_STEP_SIZE #define TNT_PAYLOAD_SIZE_MAX #define TNT_TCP_IO (object) enum TntTcpIOReadState; enum TntTcpIOWriteState; struct TntTcpIO; TntTcpIO* tnt_tcp_io_new (void); TntTcpIO* tnt_tcp_io_new_with_cipher (FluxCipher *cipher); void tnt_tcp_io_init (TntTcpIO *tcp_io, FluxCipher *cipher); void tnt_tcp_io_init_self (TntTcpIO *tcp_io); void tnt_tcp_io_finalize (FluxObject *tcp_io); void tnt_tcp_io_reset (TntTcpIO *tcp_io); void tnt_tcp_io_set_queue_out_max_len (TntTcpIO *tcp_io, TntMessageType message_type, gint max_len); void tnt_tcp_io_message_queue_out (TntTcpIO *tcp_io, TntMessage *message); void tnt_tcp_io_set_message_in_func (TntTcpIO *tcp_io, TntMessageInFunc *func, gpointer data); guint tnt_tcp_io_get_cps_goal (TntTcpIO *tcp_io, TntTransferDirection dir); void tnt_tcp_io_set_cps_goal (TntTcpIO *tcp_io, TntTransferDirection dir, guint cps); gboolean tnt_tcp_io_get_read_info (TntTcpIO *tcp_io, TntMessageType *type, gpointer *payload, guint16 *payload_size); TntMessage* tnt_tcp_io_get_write_message (TntTcpIO *tcp_io);
typedef enum { TNT_TCP_IO_READ_FLAGS, /* Reading initial flag byte */ TNT_TCP_IO_READ_MESSAGE_HEADER, /* TntMessage - src, dest, ttl, type and payload size */ TNT_TCP_IO_READ_SIGNATURE, /* Optional signature */ TNT_TCP_IO_READ_MESSAGE_PAYLOAD, /* Contents specific to message type; marshalled */ TNT_TCP_IO_READ_DATA_BLOCK /* Reading a data block (follows payload of TNT_MESSAGE_DATA_BLOCK) */ } TntTcpIOReadState;
typedef enum { TNT_TCP_IO_WRITE_IDLE, /* No message to write */ TNT_TCP_IO_WRITE_HEADERS, /* Writing flags, header (all at once) */ TNT_TCP_IO_WRITE_PAYLOAD, /* Writing payload (piecemeal) */ TNT_TCP_IO_WRITE_DATA_BLOCK /* Writing data block (piecemeal) */ } TntTcpIOWriteState;
struct TntTcpIO { FluxTcpIO tcp_io; TntTcpIOReadInfo read_info; TntTcpIOWriteInfo write_info; TntMessageInFunc *message_in_func; gpointer message_in_data; TntMessageInFunc *data_in_begin_func; gpointer data_in_begin_data; GList *queue_out, *queue_out_last; guint queue_out_len; GHashTable *queue_class_table; };
TntTcpIO* tnt_tcp_io_new_with_cipher (FluxCipher *cipher);
cipher : | |
Returns : |
void tnt_tcp_io_set_queue_out_max_len (TntTcpIO *tcp_io, TntMessageType message_type, gint max_len);
tcp_io : | |
message_type : | |
max_len : |
void tnt_tcp_io_message_queue_out (TntTcpIO *tcp_io, TntMessage *message);
tcp_io : | |
message : |
void tnt_tcp_io_set_message_in_func (TntTcpIO *tcp_io, TntMessageInFunc *func, gpointer data);
tcp_io : | |
func : | |
data : |
guint tnt_tcp_io_get_cps_goal (TntTcpIO *tcp_io, TntTransferDirection dir);
tcp_io : | |
dir : | |
Returns : |
void tnt_tcp_io_set_cps_goal (TntTcpIO *tcp_io, TntTransferDirection dir, guint cps);
tcp_io : | |
dir : | |
cps : |
gboolean tnt_tcp_io_get_read_info (TntTcpIO *tcp_io, TntMessageType *type, gpointer *payload, guint16 *payload_size);
tcp_io : | |
type : | |
payload : | |
payload_size : | |
Returns : |
TntMessage* tnt_tcp_io_get_write_message (TntTcpIO *tcp_io);
tcp_io : | |
Returns : |
<< tnt-routed-message | tnt-tcp-listener >> |