tnt-tcp-io

tnt-tcp-io —

Synopsis




#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);

Description

Details

TNT_MESSAGE_FLAGS_SIZE

#define TNT_MESSAGE_FLAGS_SIZE           1


TNT_MESSAGE_TYPE_SIZE

#define TNT_MESSAGE_TYPE_SIZE            2


TNT_MESSAGE_TTL_SIZE

#define TNT_MESSAGE_TTL_SIZE             1


TNT_MESSAGE_SIGNATURE_SIZE_SIZE

#define TNT_MESSAGE_SIGNATURE_SIZE_SIZE  1


TNT_MESSAGE_PAYLOAD_SIZE_SIZE

#define TNT_MESSAGE_PAYLOAD_SIZE_SIZE    2


TNT_MESSAGE_DATA_BLOCK_SIZE_SIZE

#define TNT_MESSAGE_DATA_BLOCK_SIZE_SIZE 4


TNT_DATA_STEP_SIZE

#define TNT_DATA_STEP_SIZE               1024


TNT_PAYLOAD_SIZE_MAX

#define TNT_PAYLOAD_SIZE_MAX             4096  /* Payload may not exceed this limit */


TNT_TCP_IO()

#define TNT_TCP_IO(object) ((TntTcpIO *) object)

object :

enum TntTcpIOReadState

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;


enum TntTcpIOWriteState

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

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;
};


tnt_tcp_io_new ()

TntTcpIO*   tnt_tcp_io_new                  (void);

Returns :

tnt_tcp_io_new_with_cipher ()

TntTcpIO*   tnt_tcp_io_new_with_cipher      (FluxCipher *cipher);

cipher :
Returns :

tnt_tcp_io_init ()

void        tnt_tcp_io_init                 (TntTcpIO *tcp_io,
                                             FluxCipher *cipher);

tcp_io :
cipher :

tnt_tcp_io_init_self ()

void        tnt_tcp_io_init_self            (TntTcpIO *tcp_io);

tcp_io :

tnt_tcp_io_finalize ()

void        tnt_tcp_io_finalize             (FluxObject *tcp_io);

tcp_io :

tnt_tcp_io_reset ()

void        tnt_tcp_io_reset                (TntTcpIO *tcp_io);

tcp_io :

tnt_tcp_io_set_queue_out_max_len ()

void        tnt_tcp_io_set_queue_out_max_len
                                            (TntTcpIO *tcp_io,
                                             TntMessageType message_type,
                                             gint max_len);

tcp_io :
message_type :
max_len :

tnt_tcp_io_message_queue_out ()

void        tnt_tcp_io_message_queue_out    (TntTcpIO *tcp_io,
                                             TntMessage *message);

tcp_io :
message :

tnt_tcp_io_set_message_in_func ()

void        tnt_tcp_io_set_message_in_func  (TntTcpIO *tcp_io,
                                             TntMessageInFunc *func,
                                             gpointer data);

tcp_io :
func :
data :

tnt_tcp_io_get_cps_goal ()

guint       tnt_tcp_io_get_cps_goal         (TntTcpIO *tcp_io,
                                             TntTransferDirection dir);

tcp_io :
dir :
Returns :

tnt_tcp_io_set_cps_goal ()

void        tnt_tcp_io_set_cps_goal         (TntTcpIO *tcp_io,
                                             TntTransferDirection dir,
                                             guint cps);

tcp_io :
dir :
cps :

tnt_tcp_io_get_read_info ()

gboolean    tnt_tcp_io_get_read_info        (TntTcpIO *tcp_io,
                                             TntMessageType *type,
                                             gpointer *payload,
                                             guint16 *payload_size);

tcp_io :
type :
payload :
payload_size :
Returns :

tnt_tcp_io_get_write_message ()

TntMessage* tnt_tcp_io_get_write_message    (TntTcpIO *tcp_io);

tcp_io :
Returns :