⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headers.cxx

📁 这是国外的resip协议栈
💻 CXX
📖 第 1 页 / 共 2 页
字号:
#if defined(HAVE_CONFIG_H)#include "resip/stack/config.hxx"#endif#include "rutil/Data.hxx"#include "resip/stack/Headers.hxx"#include "resip/stack/Symbols.hxx"#include "resip/stack/SipMessage.hxx"// GPERF generated external routines#include "resip/stack/HeaderHash.hxx"#include <iostream>using namespace std;//int strcasecmp(const char*, const char*);//int strncasecmp(const char*, const char*, int len);using namespace resip;Data Headers::HeaderNames[MAX_HEADERS+1];bool Headers::CommaTokenizing[] = {false};bool Headers::CommaEncoding[] = {false};bool Headers::Multi[]={false};HeaderBase* HeaderBase::theHeaderInstances[] = {0};bool Headers::isCommaTokenizing(Type type){   return CommaTokenizing[type+1];}bool Headers::isCommaEncoding(Type type){   return CommaEncoding[type+1];}const Data&Headers::getHeaderName(int type){   return HeaderNames[type+1];}boolHeaders::isMulti(Type type){   return Multi[type+1];}#define defineHeader(_enum, _name, _type, _reference)                                                                   \Headers::Type                                                                                                           \H_##_enum::getTypeNum() const {return Headers::_enum;}                                                                  \                                                                                                                        \void H_##_enum::merge(SipMessage& target, const SipMessage& embedded)                                                   \{                                                                                                                       \   if (embedded.exists(*this))                                                                                          \   {                                                                                                                    \      target.header(*this) = embedded.header(*this);                                                                    \   }                                                                                                                    \}                                                                                                                       \                                                                                                                        \H_##_enum::H_##_enum()                                                                                                  \{                                                                                                                       \   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \   Headers::Multi[Headers::_enum+1] = false;                                                                             \   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \}                                                                                                                       \                                                                                                                        \_type&                                                                                                                  \H_##_enum::knownReturn(ParserContainerBase* container)                                                                  \{                                                                                                                       \   return dynamic_cast<ParserContainer<_type>*>(container)->front();                                                    \}                                                                                                                       \                                                                                                                        \ParserContainerBase*                                                                                                    \H_##_enum::makeContainer(HeaderFieldValueList* hfvs) const                                                              \{                                                                                                                       \   return new ParserContainer<_type>(hfvs,Headers::_enum);                                                              \}                                                                                                                       \                                                                                                                        \H_##_enum resip::h_##_enum#define defineMultiHeader(_enum, _name, _type, _reference)                                                                              \   Headers::Type                                                                                                                        \H_##_enum##s::getTypeNum() const {return Headers::_enum;}                                                                               \                                                                                                                                        \void H_##_enum##s::merge(SipMessage& target, const SipMessage& embedded)                                                                \{                                                                                                                                       \   if (embedded.exists(*this))                                                                                                          \   {                                                                                                                                    \      target.header(*this).append(embedded.header(*this));                                                                              \   }                                                                                                                                    \}                                                                                                                                       \                                                                                                                                        \H_##_enum##s::H_##_enum##s()                                                                                                            \{                                                                                                                                       \   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \   Headers::Multi[Headers::_enum+1] = true;                                                                             \   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \}                                                                                                                                       \                                                                                                                                        \ParserContainer<_type>&                                                                                                                 \H_##_enum##s::knownReturn(ParserContainerBase* container)                                                                               \{                                                                                                                                       \   return *dynamic_cast<ParserContainer<_type>*>(container);                                                                            \}                                                                                                                                       \                                                                                                                                        \ParserContainerBase*                                                                                                    \H_##_enum##s::makeContainer(HeaderFieldValueList* hfvs) const                                                           \{                                                                                                                       \   return new ParserContainer<_type>(hfvs,Headers::_enum);                                                              \}                                                                                                                       \                                                                                                                                        \H_##_enum##s resip::h_##_enum##s//====================// Token//====================defineHeader(ContentDisposition, "Content-Disposition", Token, "RFC 3261");defineHeader(ContentEncoding, "Content-Encoding", Token, "RFC 3261");defineHeader(ContentTransferEncoding, "Content-Transfer-Encoding", StringCategory, "RFC ?"); // !dlb! defineMultiHeaderdefineHeader(MIMEVersion, "MIME-Version", Token, "RFC 3261");defineHeader(Priority, "Priority", Token, "RFC 3261");defineHeader(Event, "Event", Token, "RFC 3265");defineHeader(SubscriptionState, "Subscription-State", Token, "RFC 3265");defineHeader(SIPETag, "SIP-ETag", Token, "RFC 3903");defineHeader(SIPIfMatch, "SIP-If-Match", Token, "RFC 3903");defineHeader(ContentId, "Content-ID", Token, "RFC 2045");defineHeader(Identity, "Identity", StringCategory, "draft-sip-identity-03");defineMultiHeader(AllowEvents, "Allow-Events", Token, "RFC 3265");// explicitly declare to avoid h_AllowEventss, ughH_AllowEventss resip::h_AllowEvents;defineMultiHeader(AcceptEncoding, "Accept-Encoding", Token, "RFC 3261");defineMultiHeader(AcceptLanguage, "Accept-Language", Token, "RFC 3261");defineMultiHeader(Allow, "Allow", Token, "RFC 3261");defineMultiHeader(ContentLanguage, "Content-Language", Token, "RFC 3261");defineMultiHeader(ProxyRequire, "Proxy-Require", Token, "RFC 3261");defineMultiHeader(Require, "Require", Token, "RFC 3261");defineMultiHeader(Supported, "Supported", Token, "RFC 3261");defineMultiHeader(Unsupported, "Unsupported", Token, "RFC 3261");defineMultiHeader(SecurityClient, "Security-Client", Token, "RFC 3329");defineMultiHeader(SecurityServer, "Security-Server", Token, "RFC 3329");defineMultiHeader(SecurityVerify, "Security-Verify", Token, "RFC 3329");// explicitly declare to avoid h_SecurityVerifys, ughH_SecurityVerifys resip::h_SecurityVerifies;defineMultiHeader(RequestDisposition, "Request-Disposition", Token, "RFC 3841");defineMultiHeader(Reason, "Reason", Token, "RFC 3326");defineMultiHeader(Privacy, "Privacy", Token, "RFC 3323");// explicitly declare to avoid h_PrivacysH_Privacys resip::h_Privacies;defineMultiHeader(PMediaAuthorization, "P-Media-Authorization", Token, "RFC 3313");defineHeader(ReferSub, "Refer-Sub", Token, "draft-ietf-sip-refer-with-norefersub-03");defineHeader(AnswerMode, "Answer-Mode", Token, "draft-ietf-answermode-01");defineHeader(PrivAnswerMode, "Priv-Answer-Mode", Token, "draft-ietf-answermode-01");//====================// Mime//====================typedef ParserContainer<Mime> Mimes;defineMultiHeader(Accept, "Accept", Mime, "RFC 3261");defineHeader(ContentType, "Content-Type", Mime, "RFC 3261");//====================// GenericUris://====================defineHeader(IdentityInfo, "Identity-Info", GenericUri, "draft-sip-identity-03");typedef ParserContainer<GenericUri> GenericUris;defineMultiHeader(CallInfo, "Call-Info", GenericUri, "RFC 3261");defineMultiHeader(AlertInfo, "Alert-Info", GenericUri, "RFC 3261");defineMultiHeader(ErrorInfo, "Error-Info", GenericUri, "RFC 3261");//====================// NameAddr://====================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -