|
reSIProcate/stack
9694
|
00001 #if !defined(RESIP_PARAMETERTYPEENUMS_HXX) 00002 #define RESIP_PARAMETERTYPEENUMS_HXX 00003 00004 #include "rutil/Data.hxx" 00005 00013 #define defineParam(_enum, _name, _type, _rfc) _enum 00014 00018 #define UNUSED_defineParam(_enum, _name, _type, _rfc) SAVE##_enum, _enum = UNKNOWN, RESET##enum = SAVE##_enum-1 00019 00020 namespace resip 00021 { 00022 00023 class Parameter; 00024 class ParseBuffer; 00025 class PoolBase; 00026 00038 class ParameterTypes 00039 { 00040 00041 public: 00042 // !dlb! until automated, must ensure that this set is consistent with 00043 // gperf in ParameterTypes.cxx, ParameterTypes.hxx, Parameters.gperf 00044 // NOTE: !!Parameters.gperf must have lowercase parameters!! 00045 // Also needs to be in ParserCategory.hxx/cxx 00046 // PLEASE compile and run testParserCategories after changing this file. 00047 enum Type 00048 { 00049 UNKNOWN = -1, 00050 defineParam(data, "data", ExistsParameter, "RFC 3840"), 00051 defineParam(control, "control", ExistsParameter, "RFC 3840"), 00052 defineParam(mobility, "mobility", QuotedDataParameter, "RFC 3840"), // mobile|fixed 00053 defineParam(description, "description", QuotedDataParameter, "RFC 3840"), // <> quoted 00054 defineParam(events, "events", QuotedDataParameter, "RFC 3840"), // list 00055 defineParam(priority, "priority", QuotedDataParameter, "RFC 3840"), // non-urgent|normal|urgent|emergency 00056 defineParam(methods, "methods", QuotedDataParameter, "RFC 3840"), // list 00057 defineParam(schemes, "schemes", QuotedDataParameter, "RFC 3840"), // list 00058 defineParam(application, "application", ExistsParameter, "RFC 3840"), 00059 defineParam(video, "video", ExistsParameter, "RFC 3840"), 00060 defineParam(language, "language", QuotedDataParameter, "RFC 3840"), // list 00061 defineParam(type, "type", QuotedDataParameter, "RFC 3840"), // list 00062 defineParam(isFocus, "isfocus", ExistsParameter, "RFC 3840"), 00063 defineParam(actor, "actor", QuotedDataParameter, "RFC 3840"), // principal|msg-taker|attendant|information 00064 defineParam(text, "text", ExistsOrDataParameter, "RFC 3840"), // using ExistsOrDataParameter so this parameter is compatible with both RFC3840 and RFC3326 00065 defineParam(extensions, "extensions", QuotedDataParameter, "RFC 3840"), //list 00066 00067 defineParam(Instance, "+sip.instance", QuotedDataParameter, "RFC 5626"), // <> quoted 00068 defineParam(regid, "reg-id", UInt32Parameter, "RFC 5626"), 00069 defineParam(ob,"ob",ExistsParameter, "RFC 5626"), 00070 00071 defineParam(pubGruu, "pub-gruu", QuotedDataParameter, "RFC 5627"), 00072 defineParam(tempGruu, "temp-gruu", QuotedDataParameter, "RFC 5627"), 00073 defineParam(gr, "gr", ExistsOrDataParameter, "RFC 5627"), 00074 00075 defineParam(accessType, "access-type", DataParameter, "RFC 2046"), 00076 defineParam(algorithm, "algorithm", DataParameter, "RFC ????"), 00077 defineParam(boundary, "boundary", DataParameter, "RFC 2046"), 00078 defineParam(branch, "branch", BranchParameter, "RFC ????"), 00079 defineParam(charset, "charset", DataParameter, "RFC 2045"), 00080 defineParam(cnonce, "cnonce", QuotedDataParameter, "RFC ????"), 00081 defineParam(comp, "comp", DataParameter, "RFC ????"), 00082 defineParam(dAlg, "d-alg", DataParameter, "RFC 3329"), 00083 defineParam(dQop, "d-qop", DataParameter, "RFC ????"), 00084 defineParam(dVer, "d-ver", QuotedDataParameter, "RFC ????"), 00085 defineParam(directory, "directory", DataParameter, "RFC 2046"), 00086 defineParam(domain, "domain", QuotedDataParameter, "RFC ????"), 00087 defineParam(duration, "duration", UInt32Parameter, "RFC ????"), 00088 defineParam(expiration, "expiration", QuotedDataParameter, "RFC 2046"), 00089 defineParam(expires, "expires", UInt32Parameter, "RFC ????"), 00090 defineParam(filename, "filename", DataParameter, "RFC ????"), 00091 defineParam(fromTag, "from-tag", DataParameter, "RFC ????"), 00092 defineParam(handling, "handling", DataParameter, "RFC ????"), 00093 defineParam(id, "id", DataParameter, "RFC ????"), 00094 defineParam(lr, "lr", ExistsParameter, "RFC ????"), 00095 defineParam(maddr, "maddr", DataParameter, "RFC ????"), 00096 defineParam(method, "method", DataParameter, "RFC ????"), 00097 defineParam(micalg, "micalg", DataParameter, "RFC 1847"), 00098 defineParam(mode, "mode", DataParameter, "RFC 2046"), 00099 defineParam(name, "name", DataParameter, "RFC 2046"), 00100 defineParam(nc, "nc", DataParameter, "RFC ????"), 00101 defineParam(nonce, "nonce", QuotedDataParameter, "RFC ????"), 00102 defineParam(opaque, "opaque", QuotedDataParameter, "RFC ????"), 00103 defineParam(permission, "permission", DataParameter, "RFC 2046"), 00104 defineParam(protocol, "protocol", QuotedDataParameter, "RFC 1847"), 00105 defineParam(purpose, "purpose", DataParameter, "RFC ????"), 00106 defineParam(q, "q", QValueParameter, "RFC 3261"), 00107 00108 defineParam(realm, "realm", QuotedDataParameter, "RFC ????"), 00109 defineParam(reason, "reason", DataParameter, "RFC ????"), 00110 defineParam(received, "received", DataParameter, "RFC ????"), 00111 defineParam(require, "require", DataParameter, "RFC 5373"), 00112 defineParam(response, "response", QuotedDataParameter, "RFC ????"), 00113 defineParam(retryAfter, "retry-after", UInt32Parameter, "RFC ????"), 00114 defineParam(rinstance, "rinstance", DataParameter, "Internal"), 00115 defineParam(rport, "rport", RportParameter, "RFC 3851"), 00116 defineParam(server, "server", DataParameter, "RFC 2046"), 00117 defineParam(site, "site", DataParameter, "RFC 2046"), 00118 defineParam(size, "size", DataParameter, "RFC 2046"), 00119 defineParam(smimeType, "smime-type", DataParameter, "RFC 2633"), 00120 defineParam(stale, "stale", DataParameter, "RFC ????"), 00121 defineParam(tag, "tag", DataParameter, "RFC 3261"), 00122 defineParam(toTag, "to-tag", DataParameter, "RFC ????"), 00123 defineParam(transport, "transport", DataParameter, "RFC 3261"), 00124 defineParam(ttl, "ttl", UInt32Parameter, "RFC 3261"), 00125 defineParam(uri, "uri", QuotedDataParameter, "RFC ????"), 00126 defineParam(user, "user", DataParameter, "RFC ????"), 00127 defineParam(extension, "ext", DataParameter, "RFC ????"), 00128 defineParam(username, "username", DataParameter, "RFC ????"), 00129 defineParam(earlyOnly, "early-only", ExistsParameter, "RFC 3891"), 00130 defineParam(refresher, "refresher", DataParameter, "RFC 4028"), 00131 00132 defineParam(profileType, "profile-type", DataParameter, "draft-ietf-sipping-config-framework"), 00133 defineParam(vendor, "vendor", QuotedDataParameter, "draft-ietf-sipping-config-framework"), 00134 defineParam(model, "model", QuotedDataParameter, "draft-ietf-sipping-config-framework"), 00135 defineParam(version, "version", QuotedDataParameter, "draft-ietf-sipping-config-framework"), 00136 defineParam(effectiveBy, "effective-by", UInt32Parameter, "draft-ietf-sipping-config-framework"), 00137 defineParam(document, "document", DataParameter, "draft-ietf-sipping-config-framework"), 00138 defineParam(appId, "app-id", DataParameter, "draft-ietf-sipping-config-framework"), 00139 defineParam(networkUser, "network-user", DataParameter, "draft-ietf-sipping-config-framework"), 00140 00141 defineParam(url, "url", QuotedDataParameter, "draft-ietf-sip-content-indirect-mech-05"), 00142 00143 00144 defineParam(sigcompId, "sigcomp-id", QuotedDataParameter, "draft-ietf-rohc-sigcomp-sip"), 00145 defineParam(qop, "qop", DataParameter, "RFC 3261"), 00146 defineParam(qopOptions, "qop", DataParameter, "RFC 3261"), 00147 defineParam(addTransport, "addTransport", ExistsParameter, "Internal"), 00148 00149 MAX_PARAMETER 00150 }; 00151 00155 static Type getType(const char* start, unsigned int length); 00156 00164 typedef Parameter* (*Factory)(ParameterTypes::Type, ParseBuffer&, const std::bitset<256>& terminators, PoolBase* pool); 00165 00170 static Factory ParameterFactories[MAX_PARAMETER]; 00171 00176 static Data ParameterNames[MAX_PARAMETER]; 00177 }; 00178 00179 } 00180 00181 #undef defineParam 00182 #undef UNUSED_defineParam 00183 00184 #endif 00185 00186 /* ==================================================================== 00187 * The Vovida Software License, Version 1.0 00188 * 00189 * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. 00190 * 00191 * Redistribution and use in source and binary forms, with or without 00192 * modification, are permitted provided that the following conditions 00193 * are met: 00194 * 00195 * 1. Redistributions of source code must retain the above copyright 00196 * notice, this list of conditions and the following disclaimer. 00197 * 00198 * 2. Redistributions in binary form must reproduce the above copyright 00199 * notice, this list of conditions and the following disclaimer in 00200 * the documentation and/or other materials provided with the 00201 * distribution. 00202 * 00203 * 3. The names "VOCAL", "Vovida Open Communication Application Library", 00204 * and "Vovida Open Communication Application Library (VOCAL)" must 00205 * not be used to endorse or promote products derived from this 00206 * software without prior written permission. For written 00207 * permission, please contact vocal@vovida.org. 00208 * 00209 * 4. Products derived from this software may not be called "VOCAL", nor 00210 * may "VOCAL" appear in their name, without prior written 00211 * permission of Vovida Networks, Inc. 00212 * 00213 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED 00214 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00215 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND 00216 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA 00217 * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES 00218 * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, 00219 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00220 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00221 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 00222 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00223 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 00224 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 00225 * DAMAGE. 00226 * 00227 * ==================================================================== 00228 * 00229 * This software consists of voluntary contributions made by Vovida 00230 * Networks, Inc. and many individuals on behalf of Vovida Networks, 00231 * Inc. For more information on Vovida Networks, Inc., please see 00232 * <http://www.vovida.org/>. 00233 * 00234 */
1.7.5.1