msg 1.12.11devel
Loading...
Searching...
No Matches
Data Fields | Related Symbols
msg_mclass_s Struct Reference

Factory object for protocol messages. More...

#include <msg_mclass.h>

Collaboration diagram for msg_mclass_s:
Collaboration graph
[legend]

Data Fields

struct msg_hclass_s mc_hclass [1]
 Recursive header class.
 
char const * mc_name
 Protocol name, e.g., "SIP/2.0".
 
void * mc_tag
 Protocol-specific tag.
 
unsigned mc_flags
 Default flags.
 
unsigned mc_msize
 Size of public message structure.
 
issize_t(* mc_extract_body )(msg_t *msg, msg_pub_t *pub, char b[], isize_t bsiz, int eos)
 Function extracting the message contents.
 
msg_href_t mc_request [1]
 Request line reference.
 
msg_href_t mc_status [1]
 Status line reference.
 
msg_href_t mc_separator [1]
 Separator line reference.
 
msg_href_t mc_payload [1]
 Message body reference.
 
msg_href_t mc_unknown [1]
 Reference for unknown headers.
 
msg_href_t mc_error [1]
 Reference for erroneous header.
 
msg_href_t mc_multipart [1]
 Multipart body reference.
 
msg_href_t const * mc_short
 Short forms (or NULL)
 
short mc_hash_size
 Size of parsing table

 
short mc_hash_used
 Number of headers in parsing table.
 
msg_href_t mc_hash [MC_HASH_SIZE]
 Hash table for parsing containing reference for each header.
 

Related Symbols

(Note that these are not member symbols.)

msg_mclass_tmsg_mclass_clone (msg_mclass_t const *old, int newsize, int empty)
 Clone a message class.
 
int msg_mclass_insert_header (msg_mclass_t *mc, msg_hclass_t *hc, unsigned short offset)
 Add a new header to the message class.
 
int msg_mclass_insert_with_mask (msg_mclass_t *mc, msg_hclass_t *hc, unsigned short offset, unsigned short flags)
 Add a new header to the message class.
 
int msg_mclass_insert (msg_mclass_t *mc, msg_href_t const *hr)
 Add a header reference to the message class.
 
msg_href_t const * msg_find_hclass (msg_mclass_t const *mc, char const *s, isize_t *return_start_of_content)
 Search for a header class.
 

Detailed Description

Factory object for protocol messages.

The message class is a kind of a factory object used to create new message objects for the protocol it represents (see msg_create()).

The message class object contains all the information needed to parse a message. It used when headers are added or removed from the message. When a message is sent, the message class is used to order message components and print (encode) the message in text format.

The message class contains reference objects to headers and other components within the message. Each reference contains a pointer to a header class and a offset to the header objects within public message structure. The parser engine uses these references when it adds a newly parsed header object to the message structure. The function msg_find_hclass() searches for the reference of the named header.

The application can make a copy of existing message class object using the function msg_mclass_clone(). New headers can be added to the message class with the msg_mclass_insert_header() and msg_mclass_insert() functions. The message class of an existing message object can be found out with the function msg_mclass().

See also
sip_default_mclass(), http_default_mclass(), msg_create(), msg_mclass(), msg_mclass_clone(), msg_mclass_insert_header(), msg_mclass_insert_with_mask(), msg_mclass_insert().

Friends And Related Symbol Documentation

◆ msg_find_hclass()

msg_href_t const * msg_find_hclass ( msg_mclass_t const *  mc,
char const *  s,
isize_t *  return_start_of_content 
)
related

Search for a header class.

The function msg_find_hclass() searches for a header class from a message class based on the contents of the header to be parsed. The buffer s should point to the first character in the header name.

Parameters
[in]mcmessage class object
[in]sheader contents
[out]return_start_of_contentstart of header content (may be NULL)
Returns
The function msg_find_hclass() returns a pointer to a header reference structure. A pointer to a header reference for unknown headers is returned, if the header is not included in the message class.
The return-value parameter return_start_of_content will contain the start of the header contents within s, or 0 upon an error parsing the header name and following colon.
Upon a fatal error, a NULL pointer is returned.

◆ msg_mclass_insert()

int msg_mclass_insert ( msg_mclass_t mc,
msg_href_t const *  hr 
)
related

Add a header reference to the message class.

Parameters
[in,out]mcpointer to a message class object
[in]hrheader reference object
Returns
Number of collisions in hash table, or -1 upon an error.

◆ msg_mclass_insert_header()

int msg_mclass_insert_header ( msg_mclass_t mc,
msg_hclass_t hc,
unsigned short  offset 
)
related

Add a new header to the message class.

Insert a header class hc to the message class object mc. If the given offset of the header in public messagestructure" is zero, the function extends the public message structure in order to store newly inserted header there. @param [in,out] mc pointer to a message class object @param [in] hc pointer to a header class object @param [in] offset offset of the header in @ref msg_pub_t "public message structure"

If the offset is 0, the msg_mclass_insert_header() increases size of the public message structure and places the header at the end of message.

Returns
Number of collisions in hash table, or -1 upon an error.
Deprecated:
Use msg_mclass_insert_with_mask() instead.

◆ msg_mclass_insert_with_mask()

int msg_mclass_insert_with_mask ( msg_mclass_t mc,
msg_hclass_t hc,
unsigned short  offset,
unsigned short  flags 
)
related

Add a new header to the message class.

Insert a header class hc to the message class mc. If the given offset of the header in public message structure is zero, extend the size of the public message structure in order to store headers at the end of structure.

Parameters
[in,out]mcpointer to a message class
[in]hcpointer to a header class
[in]offsetoffset of the header in public message structure
[in]flagsclassification flags for the header
Returns
Number of collisions in hash table, or -1 upon an error.

Sofia-SIP 1.12.11devel - Copyright (C) 2006 Nokia Corporation. All rights reserved. Licensed under the terms of the GNU Lesser General Public License.