Commit 6de0b34d authored by nikolajev's avatar nikolajev
Browse files

MSRP codets

parent d1e28f22
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#include "sip_codets.h"
#include "sdp_codets.h"
#include "isup_codets.h"
#include "msrp_codets.h"

namespace t3devlib {
namespace gen {
+38 −0
Original line number Diff line number Diff line
#ifndef  COMMON_SIP_MSRP_H
#define  COMMON_SIP_MSRP_H

#include "gen_classes.h"
#include "Regex.h"

namespace t3devlib { namespace gen {

//WSP: space, htab, vtab, form feed
#define SIPCHARS_WSP		" \t\v\f"
#define SIPREG_LWS		"(?:[" SIPCHARS_WSP "]*\\r\\n)?[" SIPCHARS_WSP "]+"
#define SIPREG_SWS		"(?:" SIPREG_LWS ")?"

#define SIPREG_HCOLON		"[ 	]*:" SIPREG_SWS
#define SIPREG_COMMA		SIPREG_SWS "[,]" SIPREG_SWS
#define SIPREG_SEMI			SIPREG_SWS "[;]" SIPREG_SWS
#define SIPREG_EQUAL		SIPREG_SWS "[=]" SIPREG_SWS
#define SIPREG_SLASH		SIPREG_SWS "[/]" SIPREG_SWS
#define SIPREG_COLON		SIPREG_SWS "[:]" SIPREG_SWS

#define SIPCHARS_HEXA	"0-9A-Fa-f"

// IPv6
#define SIPREG_HEX4		"[" SIPCHARS_HEXA "]{1,4}"
#define SIPREG_HEXSEQ		SIPREG_HEX4 "([:]" SIPREG_HEX4 ")*"
#define SIPREG_HEXPART	"(((" SIPREG_HEXSEQ ")?[:]{2}(" SIPREG_HEXSEQ ")?)|(" SIPREG_HEXSEQ  "))"
#define SIPREG_IP6		"[[]" SIPREG_HEXPART "([:]" SIPREG_IP4 ")?[]]"

	//IPv4
#define SIPREG_IP4	"([0-9]{1,3}\\.){3}[0-9]{1,3}"

	void normalise_quoted_string (Charstring& cs, bool remove_quotes = false) throw (DecodeError);
	void read_sp(Buffer & buffer, Variable* v);
	bool detect_separator(Regex & reg_separator, Buffer & buffer);
	bool detect_semi(Buffer & buffer) throw (DecodeError);
	bool detect_comma(Buffer & buffer);
}}
#endif
+2817 −3

File changed.

Preview size limit exceeded, changes collapsed.

+83 −1
Original line number Diff line number Diff line
#ifndef  MSRPCODETS_H
#define  MSRPCODETS_H

#include <t3devlib/t3devlib.h>

namespace t3devlib {
namespace gen {

// TODO To be implemented
//MSRP definitions
//type charstring TransactionID;
T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, TransactionID, Charstring);
//type charstring Ident length (3..31);
T3DEVLIB_VARIABLE_SIZE_STRING_DEFINITION (LibMsrp_TypesAndValues, Ident, Charstring, (3*8), (31*8));
//type octetstring Token;
T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Token, Charstring);
//type integer Namespace;// length (3);
T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, Namespace, Unsigned);
//type integer StatusCode;
T3DEVLIB_ASCII_INTEGER_DEFINITION (LibMsrp_TypesAndValues, StatusCode, Unsigned);
//type charstring SessionID;
T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, SessionID, Charstring);
//type octetstring Data;
T3DEVLIB_BASIC_DEFINITION (LibMsrp_TypesAndValues, Data, Octetstring);

//
// Implementation of enumerated types (not handled by the generator yet)
//

class MsrpKeywords : public ::t3devlib::Enum
{
private:
	static const char* msKeywordEnums[];
	static const char* msKeywordStrings[];
public:
	MsrpKeywords() : Enum (msKeywordEnums) {}

	const char* GetModuleName() const { return "LibMsrp_TypesAndValues"; }
	const char* GetTypeName() const   { return "MsrpKeywords"; }

	void Encode (Buffer& buffer) throw (EncodeError);
	void Decode (Buffer& buffer) throw (DecodeError);
};

class MsrpMethod : public ::t3devlib::Enum
{
private:
	static const char* msMethodEnumNames[];
	static const char* msMethodStringValues[];
public:
	MsrpMethod() : Enum (msMethodEnumNames) {}

	const char* GetModuleName() const { return "LibMsrp_TypesAndValues"; }
	const char* GetTypeName() const   { return "MsrpMethod"; }

	void Encode (Buffer& buffer) throw (EncodeError);
	void Decode (Buffer& buffer) throw (DecodeError);
};

class HeaderName : public ::t3devlib::Enum
{
private:
	static const char* msHeaderEnumNames[];
	static const char* msHeaderStringValues[];
public:
	HeaderName() : Enum (msHeaderEnumNames) {}

	const char* GetModuleName() const { return "LibMsrp_TypesAndValues"; }
	const char* GetTypeName() const   { return "HeaderName"; }

	void Encode (Buffer& buffer) throw (EncodeError);
	void Decode (Buffer& buffer) throw (DecodeError);
};

class ContinuationFlag : public ::t3devlib::Enum
{
private:
	static const char* msContinuationFlagNames[];
	static const char* msContinuationFlagValues[];
public:
	ContinuationFlag() : Enum (msContinuationFlagNames) {}

	const char* GetModuleName() const { return "LibMsrp_TypesAndValues"; }
	const char* GetTypeName() const   { return "ContinuationFlag"; }

	void Encode (Buffer& buffer) throw (EncodeError);
	void Decode (Buffer& buffer) throw (DecodeError);
};


#define DEFINITIONS_MimeExtensionField()	std::string m_shname;

}} //namespaces