![]() |
yumapro
21.10T-10
YumaPro SDK
|
Session messages are used by sessions and stored in ses_msg_t. More...
![]() |
Data Structures | |
struct | ses_msg_tempchunk_t |
save the chunks before putting them back into ses_buff_t structs More... | |
Functions | |
void | ses_msg_init (void) |
Initialize the session message manager module data structures. More... | |
void | ses_msg_cleanup (void) |
Cleanup the session message manager module data structures. More... | |
status_t | ses_msg_new_msg (ses_msg_t **msg) |
Malloc a new session message control header. More... | |
void | ses_msg_free_msg (ses_cb_t *scb, ses_msg_t *msg) |
Free the session message and all its buffer chunks. More... | |
status_t | ses_msg_new_buff (ses_cb_t *scb, boolean outbuff, ses_msg_buff_t **buff) |
Malloc a new session buffer chuck. More... | |
void | ses_msg_free_buff (ses_cb_t *scb, ses_msg_buff_t *buff) |
Free the session buffer chunk. More... | |
status_t | ses_msg_write_buff (ses_cb_t *scb, ses_msg_buff_t *buff, xmlChar ch) |
Add some text to the message buffer. More... | |
status_t | ses_msg_send_buffs (ses_cb_t *scb, boolean *anyout) |
Send multiple buffers to the session client socket Tries to send one packet at maximum MTU. More... | |
status_t | ses_msg_new_output_buff (ses_cb_t *scb, boolean start_chunk_mode) |
Put the current outbuff on the outQ. More... | |
void | ses_msg_make_inready (ses_cb_t *scb) |
Put the session on the inreadyQ if it is not already there. More... | |
void | ses_msg_make_outready (ses_cb_t *scb) |
Put the session on the outreadyQ if it is not already there. More... | |
void | ses_msg_make_outready_ycontrol (ses_cb_t *scb) |
Put the session on the outreadyQ if it is not already there. More... | |
void | ses_msg_finish_outmsg (ses_cb_t *scb) |
Put the outbuff in the outQ if non-empty. More... | |
ses_ready_t * | ses_msg_get_first_inready (boolean ycontrol) |
Dequeue the first entry in the inreadyQ, if any. More... | |
ses_ready_t * | ses_msg_get_first_inready_ses (ses_id_t sid) |
Dequeue the first matching session entry in the inreadyQ, if any. More... | |
ses_ready_t * | ses_msg_get_first_outready (void) |
Dequeue the first entry in the outreadyQ, if any. More... | |
ses_ready_t * | ses_msg_get_first_outready_ycontrol (void) |
Dequeue the first entry in the outreadyQ, if any Get a ycontrol entry. More... | |
void | ses_msg_dump (log_debug_t lvl, const ses_msg_t *msg, const xmlChar *text) |
Dump the message contents. More... | |
void | ses_msg_add_framing (ses_cb_t *scb, ses_msg_buff_t *buff) |
Add the base:1.1 framing chars to the buffer and adjust the buffer size pointers. More... | |
void | ses_msg_init_buff (ses_cb_t *scb, boolean outbuff, ses_msg_buff_t *buff) |
Init the buffer fields. More... | |
status_t | ses_msg_reset_message (ses_cb_t *scb, ses_msg_t *msg, dlq_hdr_t *tempchunkQ) |
Reset a message to the provided buffer. More... | |
ses_msg_tempchunk_t * | ses_msg_new_tempchunk (xmlChar *chunk, uint32 chunklen) |
Create a new temp chunk. More... | |
void | ses_msg_free_tempchunk (ses_msg_tempchunk_t *tc) |
Free a temp chunk. More... | |
void | ses_msg_clean_tempchunkQ (dlq_hdr_t *tempchunkQ) |
Clean a Q of ses_msg_tempchunk_t structs. More... | |
uint32 | ses_msg_size_tempchunkQ (dlq_hdr_t *tempchunkQ) |
Get the size of the message in the tempchunks. More... | |
ses_msg_buff_t * | ses_msg_first_outbuff (ses_cb_t *scb) |
Get the first outQ buffer. More... | |
ses_msg_buff_t * | ses_msg_next_outbuff (ses_cb_t *scb, ses_msg_buff_t *curbuff) |
Get the next outQ buffer. More... | |
size_t | ses_msg_buff_size (ses_msg_buff_t *buff) |
Get the number of bytes in the buffer (not the buffer size) More... | |
size_t | ses_msg_copy_buff (ses_msg_buff_t *buff, xmlChar *retbuff, size_t retbuff_size) |
Copy the buffer data to another buffer. More... | |
void | ses_msg_clean_outbuffs (ses_cb_t *scb) |
Clean the message out buffers for next use. More... | |
xmlChar * | ses_msg_convert_outbuffs (ses_cb_t *scb, uint32 *len) |
Clean the message out buffers for next use. More... | |
status_t | ses_msg_add_input_msg (ses_cb_t *scb, xmlChar *data, size_t datalen) |
Make a ses_msg_t to fool the session handler into thinking the HTTP code path filled in a session input message. More... | |
void | ses_msg_clean_msgQ (ses_cb_t *scb) |
Clean all the input messages use by the scb Used by YP-COAP. More... | |
Session messages are used by sessions and stored in ses_msg_t.
Each session can have a queue of inbound and outbound messages.
void ses_msg_add_framing | ( | ses_cb_t * | scb, |
ses_msg_buff_t * | buff | ||
) |
Add the base:1.1 framing chars to the buffer and adjust the buffer size pointers.
scb | session control block |
buff | buffer control block |
buff->buff | has framing chars added |
Make a ses_msg_t to fool the session handler into thinking the HTTP code path filled in a session input message.
This will be text based line-by-line parsing done by ses_getline_cb Used by YP-COAP
scb | session to use |
data | coap message body |
datalen | coap message body length |
scb->msgQ | has message created and added |
size_t ses_msg_buff_size | ( | ses_msg_buff_t * | buff | ) |
Get the number of bytes in the buffer (not the buffer size)
buff | buffer to check |
void ses_msg_clean_msgQ | ( | ses_cb_t * | scb | ) |
Clean all the input messages use by the scb Used by YP-COAP.
scb | session to use |
scb->msgQ | cleaned |
void ses_msg_clean_outbuffs | ( | ses_cb_t * | scb | ) |
Clean the message out buffers for next use.
scb | == session control block |
void ses_msg_clean_tempchunkQ | ( | dlq_hdr_t * | tempchunkQ | ) |
Clean a Q of ses_msg_tempchunk_t structs.
tempchunkQ | == que to use |
void ses_msg_cleanup | ( | void | ) |
Cleanup the session message manager module data structures.
xmlChar* ses_msg_convert_outbuffs | ( | ses_cb_t * | scb, |
uint32 * | len | ||
) |
Clean the message out buffers for next use.
Convert all the buffers into 1 big buffer Used by mgr_coap to send Block1 request data
scb | session control block |
len | address of return len |
*len | number of bytes in return buffer |
size_t ses_msg_copy_buff | ( | ses_msg_buff_t * | buff, |
xmlChar * | retbuff, | ||
size_t | retbuff_size | ||
) |
Copy the buffer data to another buffer.
buff | buffer to copy from |
retbuff | buffer to copy into |
retbuff_size | length of retbuff |
void ses_msg_dump | ( | log_debug_t | lvl, |
const ses_msg_t * | msg, | ||
const xmlChar * | text | ||
) |
Dump the message contents.
lvl | debug level for filtering. Output (if any) at LOG_DEBUG_WRITE. |
msg | message to dump |
text | start text before message dump (may be NULL) |
void ses_msg_finish_outmsg | ( | ses_cb_t * | scb | ) |
Put the outbuff in the outQ if non-empty.
Put the session on the outreadyQ if it is not already there
scb | session control block |
scb->outready | will be queued on the outreadyQ |
ses_msg_buff_t* ses_msg_first_outbuff | ( | ses_cb_t * | scb | ) |
Get the first outQ buffer.
scb | session control block |
void ses_msg_free_buff | ( | ses_cb_t * | scb, |
ses_msg_buff_t * | buff | ||
) |
Free the session buffer chunk.
scb | session control block owning the message |
buff | buffer to free (already removed from any Q) |
Free the session message and all its buffer chunks.
scb | session control block owning the message |
msg | message to free (already removed from any Q) |
void ses_msg_free_tempchunk | ( | ses_msg_tempchunk_t * | tc | ) |
Free a temp chunk.
tc | tempchunk to delete |
ses_ready_t* ses_msg_get_first_inready | ( | boolean | ycontrol | ) |
Dequeue the first entry in the inreadyQ, if any.
ycontrol | TRUE if only YControl sessions should be processed FALSE to process any session type |
ses_ready_t* ses_msg_get_first_inready_ses | ( | ses_id_t | sid | ) |
Dequeue the first matching session entry in the inreadyQ, if any.
sid | first matching session entry in the inreadyQ or NULL if none |
ses_ready_t* ses_msg_get_first_outready | ( | void | ) |
Dequeue the first entry in the outreadyQ, if any.
ses_ready_t* ses_msg_get_first_outready_ycontrol | ( | void | ) |
Dequeue the first entry in the outreadyQ, if any Get a ycontrol entry.
void ses_msg_init | ( | void | ) |
Initialize the session message manager module data structures.
void ses_msg_init_buff | ( | ses_cb_t * | scb, |
boolean | outbuff, | ||
ses_msg_buff_t * | buff | ||
) |
Init the buffer fields.
scb | session control block |
outbuff | TRUE if oupput buffer; FALSE if input buffer |
buff | buffer to send |
void ses_msg_make_inready | ( | ses_cb_t * | scb | ) |
Put the session on the inreadyQ if it is not already there.
scb | session control block |
scb->inready | will be queued on the inreadyQ |
void ses_msg_make_outready | ( | ses_cb_t * | scb | ) |
Put the session on the outreadyQ if it is not already there.
scb | session control block |
scb->outready | will be queued on the outreadyQ |
void ses_msg_make_outready_ycontrol | ( | ses_cb_t * | scb | ) |
Put the session on the outreadyQ if it is not already there.
scb | session control block |
scb->outready | will be queued on the outreadyQ |
status_t ses_msg_new_buff | ( | ses_cb_t * | scb, |
boolean | outbuff, | ||
ses_msg_buff_t ** | buff | ||
) |
Malloc a new session buffer chuck.
Note that the buffer memory is not cleared after each use since this is not needed for byte stream IO
scb | session control block to malloc a new message for |
outbuff | TRUE if this is for outgoing message FALSE if this is for incoming message |
buff | address of ses_msg_buff_t pointer that will be set |
*buff | malloced session buffer chunk (if NO_ERR return) |
Malloc a new session message control header.
msg | address of ses_msg_t pointer that will be set |
*msg | malloced session message struct (if NO_ERR return) |
Put the current outbuff on the outQ.
Put the session on the outreadyQ if it is not already there Try to allocate a new buffer for the session
scb | session control block |
start_chunk_mode | TRUE if http_chunk_mode should be started before the next buffer is allocated |
scb->outbuff | is filled in |
scb->outready | could be set |
scb->outQ | could be changed |
ses_msg_tempchunk_t* ses_msg_new_tempchunk | ( | xmlChar * | chunk, |
uint32 | chunklen | ||
) |
Create a new temp chunk.
chunk | chunk to store (memory passed off here) |
chunklen | byte length of chunk |
ses_msg_buff_t* ses_msg_next_outbuff | ( | ses_cb_t * | scb, |
ses_msg_buff_t * | curbuff | ||
) |
Get the next outQ buffer.
scb | session control block |
curbuff | current buffer |
Reset a message to the provided buffer.
This is used by HTTP client because its accept_buffer does not do de-chunking inline like the NETCONF buffer_accept code.
scb | session control block to use |
msg | message to change |
tempchunkQ | Q of ses_msg_tempchunk_t structs |
Send multiple buffers to the session client socket Tries to send one packet at maximum MTU.
scb | session control block |
anyout | address of return output flag (may be NULL) |
*anyout | = TRUE if any logging output FALSE if no logging output |
uint32 ses_msg_size_tempchunkQ | ( | dlq_hdr_t * | tempchunkQ | ) |
Get the size of the message in the tempchunks.
tempchunkQ | que to use |
status_t ses_msg_write_buff | ( | ses_cb_t * | scb, |
ses_msg_buff_t * | buff, | ||
xmlChar | ch | ||
) |
Add some text to the message buffer.
scb | session control block to use |
buff | buffer to write to |
ch | xmlChar to write |