|
|
Parser of finder messages. Parses common header and passes payload data to registered ParsingElements that invoke user callbacks when packets of given type arrive.
Sub-parsers are added with the add method. add takes a ParsingElement as an argument. These are created by helper functions like hello_notifier, eg:
void hello_handler(const FinderHello& msg) { ... do something with hello message } FinderParser fp; fp.add(hello_notifier(callback(hello_handler))); |
typedef ref_ptr<const FinderParselet> ParsingElement | ParsingElement |
typedef list<ParsingElement> PEList | PEList |
ssize_t peek_header_bytes (const string& header)
throw (BadFinderMessage) | peek_header_bytes |
[static]
Attempts to determine if the supplied string looks like a FinderMessage header.
Parameters:
header | candidate finder message header. |
Returns: header size if valid, 0 if there is no enough data to determine if it is a valid header. Throws an exception is data does not look like a FinderMessage header.
size_t max_header_bytes ()
| max_header_bytes |
[static]
Returns: maximum header size (actually size can be certain not a valid header).
size_t peek_payload_bytes (const string& header)
throw (BadFinderMessage) | peek_payload_bytes |
[static]
Returns: the size of the payload data.
inline size_t
parse (const string& buf, string::const_iterator& buf_pos)
throw (BadFinderMessage) | parse |
[const]
Parses message and calls callbacks if message type has a registered notifier.
Parameters:
buf | buffer to be parsed. |
buf_pos | starting position of parsing. Updated to point to end of parsing upon return. |
inline size_t
parse_signed (const HMAC& h, const string& buf,
string::const_iterator& buf_pos)
throw (BadFinderMessage) | parse_signed |
[const]
Parses a message using HMAC and calls callbacks if message type has a registered notifier.
Parameters:
h | HMAC instance to be used to check header authentication. |
buf | buffer to be parsed. |
buf_pos | starting position of parsing. Updated to point to end of parsing upon return. |
size_t parse (const HMAC* h, const string& b, string::const_iterator& bp)
throw (BadFinderMessage) | parse |
[const]
Parses a message using HMAC and calls callbacks if message type has a registered notifier.
Parameters:
h | pointer to HMAC to be used to check header authentication. |
buf | buffer to be parsed. |
buf_pos | starting position of parsing. Updated to point to end of parsing upon return. |
bool add (const ParsingElement& pe)
| add |
Add user callback for a particular message type. Used in conjunction with ParsingElement generating functions (ie notifier and it similarly named brethren).
bool parse_header (string::const_iterator& buffer_pos,
uint32_t& major,
uint32_t& minor,
uint32_t& src,
uint32_t& seq,
uint32_t& payload_bytes,
string& msgname)
| parse_header |
[protected static]
bool parse_payload (uint32_t src,
uint32_t seq,
const string& msgname,
const string& buf,
string::const_iterator& buf_pos)
| parse_payload |
[protected const]
inline bool parse_signature (const HMAC* h,
const string& header,
const string& b,
string::const_iterator& bp)
| parse_signature |
[protected const]
PEList _parsers | _parsers |
[protected]
Generated by: pavlin on possum.icir.org on Mon Mar 10 19:34:49 2003, using kdoc 2.0a54+XORP. |