You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sems/core/AmSipMsg.h

113 lines
2.4 KiB

#ifndef __AMSIPMSG_H__
#define __AMSIPMSG_H__
#include <string>
using std::string;
#include "sip/trans_layer.h"
/* enforce common naming in Req&Rpl */
class _AmSipMsgInDlg
{
public:
string method;
string route;
string contact;
string content_type;
string via1;
string hdrs;
string body;
unsigned int cseq;
unsigned int rseq;
string callid;
// transaction ticket from sip stack
trans_ticket tt;
string remote_ip;
unsigned short remote_port;
string local_ip;
unsigned short local_port;
_AmSipMsgInDlg() : cseq(0), rseq(0) { }
virtual ~_AmSipMsgInDlg() { };
virtual string print() const = 0;
};
/** \brief represents a SIP reply */
class AmSipReply : public _AmSipMsgInDlg
{
public:
unsigned int code;
string reason;
string next_request_uri;
/*TODO: this should be merged with request's from_/to_tag and moved above*/
string remote_tag;
string local_tag;
AmSipReply() : code(0), _AmSipMsgInDlg() { }
~AmSipReply() { }
string print() const;
};
/** \brief represents a SIP request */
class AmSipRequest : public _AmSipMsgInDlg
{
public:
string cmd;
string user;
string domain;
string r_uri;
string from_uri;
string from;
string to;
string from_tag;
string to_tag;
string rack_method;
unsigned int rack_cseq;
AmSipRequest() : _AmSipMsgInDlg() { }
~AmSipRequest() { }
string print() const;
};
string getHeader(const string& hdrs,const string& hdr_name, bool single = false);
string getHeader(const string& hdrs,const string& hdr_name,
const string& compact_hdr_name, bool single = false);
/** find a header, starting from char skip
if found, value is between pos1 and pos2
and hdr start is the start of the header
@return true if found */
bool findHeader(const string& hdrs,const string& hdr_name, const size_t skip,
size_t& pos1, size_t& pos2,
size_t& hdr_start);
bool removeHeader(string& hdrs, const string& hdr_name);
/** add an option tag @param tag to list @param hdr_name */
void addOptionTag(string& hdrs, const string& hdr_name, const string& tag);
/** remove an option tag @param tag from list @param hdr_name */
void removeOptionTag(string& hdrs, const string& hdr_name, const string& tag);
#endif /* __AMSIPMSG_H__ */
/** EMACS **
* Local variables:
* mode: c++
* c-basic-offset: 2
* End:
*/