[hydra-commits] file: branch techdemo/kpfleming/multi-version-server r584 - /techdemo/team/kp...

SVN commits to the Hydra project hydra-commits at lists.digium.com
Thu Apr 15 07:17:09 CDT 2010


Author: file
Date: Thu Apr 15 07:17:07 2010
New Revision: 584

URL: https://origsvn.digium.com/svn-view/hydra?view=rev&rev=584
Log:
Add latest changes based on some discussions about preserving type ids. They are now preserved and stuff works as expected, minus
insanity if conflicting stuff is run in the same icebox.

Added:
    techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice   (with props)
Modified:
    techdemo/team/kpfleming/multi-version-server/CMakeLists.txt
    techdemo/team/kpfleming/multi-version-server/cpp_client_v1.cpp
    techdemo/team/kpfleming/multi-version-server/cpp_client_v2.cpp
    techdemo/team/kpfleming/multi-version-server/cpp_server.cpp
    techdemo/team/kpfleming/multi-version-server/ib
    techdemo/team/kpfleming/multi-version-server/ib_cpp_both.config
    techdemo/team/kpfleming/multi-version-server/sip_endpoint.ice

Modified: techdemo/team/kpfleming/multi-version-server/CMakeLists.txt
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/CMakeLists.txt?view=diff&rev=584&r1=583&r2=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/CMakeLists.txt (original)
+++ techdemo/team/kpfleming/multi-version-server/CMakeLists.txt Thu Apr 15 07:17:07 2010
@@ -24,14 +24,16 @@
 hydra_component_init(cpp_client_v2 CXX)
 hydra_component_init(cpp_server CXX)
 
-hydra_compile_slice(sip_endpoint_v1_client.ice)
-hydra_compile_slice(sip_endpoint.ice)
-hydra_compile_slice(sip_endpoint_v1_server.ice)
+#hydra_compile_slice(sip_endpoint_v1_client.ice)
+#hydra_compile_slice(sip_endpoint.ice)
+#hydra_compile_slice(sip_endpoint_v1_server.ice)
 
-hydra_component_add_slice(cpp_client_v1 sip_endpoint_v1_client)
-hydra_component_add_slice(cpp_client_v2 sip_endpoint)
-hydra_component_add_slice(cpp_server sip_endpoint_v1_server)
-hydra_component_add_slice(cpp_server sip_endpoint)
+include_directories(${CMAKE_SOURCE_DIR})
+
+hydra_component_add_file(cpp_client_v1 sip_endpoint_v1_client.cpp)
+hydra_component_add_file(cpp_client_v2 sip_endpoint_v2_client.cpp)
+hydra_component_add_file(cpp_server sip_endpoint_v1_server.cpp)
+hydra_component_add_file(cpp_server sip_endpoint.cpp)
 
 hydra_component_add_file(cpp_client_v1 cpp_client_v1.cpp)
 hydra_component_add_file(cpp_client_v2 cpp_client_v2.cpp)

Modified: techdemo/team/kpfleming/multi-version-server/cpp_client_v1.cpp
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/cpp_client_v1.cpp?view=diff&rev=584&r1=583&r2=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/cpp_client_v1.cpp (original)
+++ techdemo/team/kpfleming/multi-version-server/cpp_client_v1.cpp Thu Apr 15 07:17:07 2010
@@ -116,7 +116,7 @@
 	dumpConfigElements(ep1_config);
 	output_function_tag("done");
 	output_function_tag("calling getEndpointConfig with dtmf/sdp filter for ep 1");
-	filter_config["xx-dtmf"] = ConfigDTMFPtr(new ConfigDTMF());
+//	filter_config["xx-dtmf"] = ConfigDTMFPtr(new ConfigDTMF());
 	filter_config["xx-sdp"] = ConfigSDPPtr(new ConfigSDP());
 	ep1_config = mgr->getEndpointConfig(1, filter_config);
 	dumpConfigElements(ep1_config);

Modified: techdemo/team/kpfleming/multi-version-server/cpp_client_v2.cpp
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/cpp_client_v2.cpp?view=diff&rev=584&r1=583&r2=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/cpp_client_v2.cpp (original)
+++ techdemo/team/kpfleming/multi-version-server/cpp_client_v2.cpp Thu Apr 15 07:17:07 2010
@@ -3,7 +3,7 @@
 #include <Ice/Ice.h>
 #include <IceBox/IceBox.h>
 
-#include "sip_endpoint.h"
+#include "sip_endpoint_v2_client.h"
 
 using namespace std;
 using namespace Hydra::SIP;
@@ -124,13 +124,13 @@
 	dumpConfigElements(ep1_config);
 	output_function_tag("done");
 	output_function_tag("calling getEndpointConfig with dtmf/sdp/lang filter for ep 1");
-	filter_config["xx-dtmf"] = ConfigDTMFPtr(new ConfigDTMF());
+//	filter_config["xx-dtmf"] = ConfigDTMFPtr(new ConfigDTMF());
 	filter_config["xx-sdp"] = ConfigSDPPtr(new ConfigSDP());
 	filter_config["xx-lang"] = ConfigLanguagePtr(new ConfigLanguage());
 	ep1_config = mgr->getEndpointConfig(1, filter_config);
 	dumpConfigElements(ep1_config);
 	output_function_tag("done");
-	return;
+//	return;
 	MultiEndpointConfigElements mece;
 	EndpointConfig get_ep_config;
 	get_ep_config.index = 7;

Modified: techdemo/team/kpfleming/multi-version-server/cpp_server.cpp
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/cpp_server.cpp?view=diff&rev=584&r1=583&r2=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/cpp_server.cpp (original)
+++ techdemo/team/kpfleming/multi-version-server/cpp_server.cpp Thu Apr 15 07:17:07 2010
@@ -18,24 +18,6 @@
 
 #define output_function_tag(s) __output_function_tag(__PRETTY_FUNCTION__, s)
 
-template<typename T>
-class VersionMasker : public T {
-public:
-	VersionMasker(const string& mask) : _mask(mask) {}
-	virtual bool ice_isA(const string& type, const Ice::Current& current) const {
-		output_function_tag("called for type " + type);
-		/* don't mask the type of this object for requests that arrived via
-		 * collocation; type masking does not work for collocated requests.
-		 */
-		if ((current.requestId != -1) && (type == _mask)) {
-			return true;
-		}
-		return T::ice_isA(type, current);
-	}
-private:
-	const string _mask;
-};
-
 namespace Hydra {
 namespace SIP {
 
@@ -45,28 +27,28 @@
 	int getIndex() const {
 		return _index;
 	}
-	EndpointPrx getProxyV2() const {
+	V2::EndpointPrx getProxyV2() const {
 		return _proxy_v2;
 	}
 	V1::EndpointPrx getProxyV1() const {
 		return _proxy_v1;
 	}
-	void setProxyV2(EndpointPrx proxy) {
+	void setProxyV2(V2::EndpointPrx proxy) {
 		_proxy_v2 = proxy;
 	}
 	void setProxyV1(V1::EndpointPrx proxy) {
 		_proxy_v1 = proxy;
 	}
-	ConfigElements _config;
+	V2::ConfigElements _config;
 private:
 	int _index;
-	EndpointPrx _proxy_v2;
+	V2::EndpointPrx _proxy_v2;
 	V1::EndpointPrx _proxy_v1;
 };
 
 typedef IceUtil::Handle<ep> epPtr;
 
-class ep_v2 : virtual public Endpoint {
+	class ep_v2 : virtual public V2::Endpoint {
 public:
 	ep_v2(epPtr ep) : _ep(ep) {}
 	virtual int getIndex(const Ice::Current& current) {
@@ -98,71 +80,75 @@
 	manager(const Ice::ObjectAdapterPtr& adapter) {
 		for (unsigned int x = 1; x < 17; x++) {
 			epPtr new_ep(new ep(x));
+
 			if (x & 0x2) {
-				ConfigDTMFPtr cfg(new ConfigDTMF());
+				V2::ConfigDTMFPtr cfg(new V2::ConfigDTMF());
 				switch (x & 0x5) {
 				case 0:
-					cfg->mode = DTMFKPML;
+					cfg->mode = V2::DTMFKPML;
 					break;
 				case 1:
-					cfg->mode = DTMFRFC2833;
+					cfg->mode = V2::DTMFRFC2833;
 					break;
 				case 4:
-					cfg->mode = DTMFINFO;
+					cfg->mode = V2::DTMFINFO;
 					break;
 				case 5:
-					cfg->mode = DTMFAuto;
+					cfg->mode = V2::DTMFAuto;
 					break;
 				}
 				new_ep->_config["dtmf"] = cfg;
 			}
 			if (x & 0x1) {
-				ConfigSDPPtr cfg(new ConfigSDP());
+				V2::ConfigSDPPtr cfg(new V2::ConfigSDP());
 				cfg->sessionOwner = "config-objects";
 				new_ep->_config["sdp"] = cfg;
 			}
+
+
 			{
-				ConfigT38Ptr cfg(new ConfigT38());
+				V2::ConfigT38Ptr cfg(new V2::ConfigT38());
 				if (x & 0x4) {
 					cfg->enable = true;
 				} else {
 					cfg->enable = false;
 				}
-				cfg->errorCorrection = (x & 0x3) ? T38ErrorCorrectionRedundancy : T38ErrorCorrectionFEC;
+				cfg->errorCorrection = (x & 0x3) ? V2::T38ErrorCorrectionRedundancy : V2::T38ErrorCorrectionFEC;
 				cfg->maxDatagram = 42;
 				new_ep->_config["t38"] = cfg;
-			}
+				}
 			if (x & 0x8) {
-				ConfigLanguagePtr cfg(new ConfigLanguage());
+				V2::ConfigLanguagePtr cfg(new V2::ConfigLanguage());
 				cfg->language = "en_us_silly";
 				new_ep->_config["lang"] = cfg;
 			}
+
 			ep_v1Ptr v1(new ep_v1(new_ep));
 			ep_v2Ptr v2(new ep_v2(new_ep));
-			new_ep->setProxyV2(EndpointPrx::uncheckedCast(adapter->addFacetWithUUID(v2, InterfaceVersion)));
+			new_ep->setProxyV2(V2::EndpointPrx::uncheckedCast(adapter->addFacetWithUUID(v2, V2::InterfaceVersion)));
 			new_ep->setProxyV1(V1::EndpointPrx::uncheckedCast(adapter->addFacet(v1, new_ep->getProxyV2()->ice_getIdentity(), V1::InterfaceVersion)));
 			endpoints[x] = new_ep;
 		}
 	}
-	ConfigElements getEndpointConfig(int index, const ConfigElements& config, const Ice::Current&) {
+	V2::ConfigElements getEndpointConfig(int index, const V2::ConfigElements& config, const Ice::Current&) {
 		output_function_tag("begin");
 		epPtr ep = endpoints[index];
-		ConfigElements result;
+		V2::ConfigElements result;
 		/* if they want the whole config, just return it */
 		if (config.begin() == config.end()) {
-			for (ConfigElements::const_iterator cur = ep->_config.begin();
+			for (V2::ConfigElements::const_iterator cur = ep->_config.begin();
 			     cur != ep->_config.end();
 			     cur++) {
 				result[(*cur).first] = (*cur).second;
 				cout << "returning " << (*cur).first << endl;
 			}
 		} else {
-			for (ConfigElements::const_iterator cur = config.begin();
+			for (V2::ConfigElements::const_iterator cur = config.begin();
 			     cur != config.end();
 			     cur++) {	
 				cout << "got " << (*cur).second->ice_id() << " with key " << (*cur).first << "...";
-				ConfigElements::const_iterator search = find_if(ep->_config.begin(), ep->_config.end(),
-										bind2nd(ice_typeMatch<ConfigElementPtr>(), *cur));
+				V2::ConfigElements::const_iterator search = find_if(ep->_config.begin(), ep->_config.end(),
+										    bind2nd(ice_typeMatch<V2::ConfigElementPtr>(), *cur));
 				if (search != ep->_config.end()) {
 					result[(*cur).first] = (*search).second;
 					cout << "returning " << (*search).second->ice_id() << endl;
@@ -174,15 +160,15 @@
 		output_function_tag("end");
 		return result;
 	}
-	int setEndpointConfig(int index, const ConfigElements& config, const Ice::Current&) {
+	int setEndpointConfig(int index, const V2::ConfigElements& config, const Ice::Current&) {
 		return 0;
 	}
-	MultiEndpointConfigElements getMultiEndpointConfig(const MultiEndpointConfigElements& config, const Ice::Current& current) {
-		MultiEndpointConfigElements result;
-		for (MultiEndpointConfigElements::const_iterator cur = config.begin();
+	V2::MultiEndpointConfigElements getMultiEndpointConfig(const V2::MultiEndpointConfigElements& config, const Ice::Current& current) {
+		V2::MultiEndpointConfigElements result;
+		for (V2::MultiEndpointConfigElements::const_iterator cur = config.begin();
 		     cur != config.end();
 		     cur++) {
-			EndpointConfig item;
+			V2::EndpointConfig item;
 
 			item.index = (*cur).index;
 			item.config = getEndpointConfig(item.index, (*cur).config, current);
@@ -190,7 +176,7 @@
 		}
 		return result;
 	}
-	int setMultiEndpointConfig(const MultiEndpointConfigElements& config, const Ice::Current&) {
+	int setMultiEndpointConfig(const V2::MultiEndpointConfigElements& config, const Ice::Current&) {
 		return 0;
 	}
 private:
@@ -205,12 +191,12 @@
 
 typedef IceUtil::Handle<manager> managerPtr;
 
-class manager_v2 : virtual public EndpointManager {
+class manager_v2 : virtual public V2::EndpointManager {
 public:
 	manager_v2(managerPtr base): _base(base) {}
-	virtual EndpointList getEndpoints(const Ice::Current&) {
+	virtual V2::EndpointList getEndpoints(const Ice::Current&) {
 		output_function_tag("begin");
-		EndpointList result;
+		V2::EndpointList result;
 		for (manager::eplist::const_iterator ep = _base->endpoints.begin();
 		     ep != _base->endpoints.end();
 		     ep++) {
@@ -220,16 +206,16 @@
 		output_function_tag("end");
 		return result;
 	}
-	virtual ConfigElements getEndpointConfig(int index, const ConfigElements& config, const Ice::Current& current) {
+	virtual V2::ConfigElements getEndpointConfig(int index, const V2::ConfigElements& config, const Ice::Current& current) {
 		return _base->getEndpointConfig(index, config, current);
 	}
-	virtual int setEndpointConfig(int index, const ConfigElements& config, const Ice::Current& current) {
+	virtual int setEndpointConfig(int index, const V2::ConfigElements& config, const Ice::Current& current) {
 		return _base->setEndpointConfig(index, config, current);
 	}
-	virtual MultiEndpointConfigElements getMultiEndpointConfig(const MultiEndpointConfigElements& config, const Ice::Current& current) {
+	virtual V2::MultiEndpointConfigElements getMultiEndpointConfig(const V2::MultiEndpointConfigElements& config, const Ice::Current& current) {
 		return _base->getMultiEndpointConfig(config, current);
 	}
-	virtual int setMultiEndpointConfig(const MultiEndpointConfigElements& config, const Ice::Current& current) {
+	virtual int setMultiEndpointConfig(const V2::MultiEndpointConfigElements& config, const Ice::Current& current) {
 		return _base->setMultiEndpointConfig(config, current);
 	}
 	virtual bool V2Test(const Ice::Current& current) {
@@ -258,7 +244,7 @@
 		return result;
 	}
 	virtual V1::ConfigElements getEndpointConfig(int index, const V1::ConfigElements& config, const Ice::Current& current) {
-		ConfigElements input;
+		V2::ConfigElements input;
 		V1::ConfigElements result;
 		/* we need to construct a V2 ConfigElements sequence to feed to the base object */
 		for (V1::ConfigElements::const_iterator cur = config.begin();
@@ -301,90 +287,12 @@
 	}
 }
 
-static __thread char const *currentFacet;
-
-class interceptor : public Ice::DispatchInterceptor {
-public:
-	interceptor(const Ice::ObjectPtr& servant) : _servant(servant) {}
-	virtual Ice::DispatchStatus dispatch(Ice::Request& request) {
-		const Ice::Current& cur = request.getCurrent();
-		cout << "dispatching for operation " << cur.operation;
-		if (!cur.facet.empty()) {
-			cout << " with facet " << cur.facet;
-		}
-		cout << endl;
-		currentFacet = cur.facet.c_str();
-		return _servant->ice_dispatch(request);
-	}
-	Ice::ObjectPtr _servant;
-};
-
-class ConfigElementFactory : public IceUtil::SimpleShared {
-public:
-	virtual Ice::ObjectPtr kablamo() = 0;
-	virtual const string& ice_staticId() = 0;
-};
-
-typedef IceUtil::Handle<ConfigElementFactory> ConfigElementFactoryPtr;
-
-template <typename T>
-class ConfigElementFactoryType : public ConfigElementFactory {
-public:
-	virtual Ice::ObjectPtr kablamo() {
-		return new T();
-	}
-	virtual const string& ice_staticId() {
-		return T::ice_staticId();
-	}
-};
-
-typedef map<string, ConfigElementFactoryPtr> TypeFactoryMap; 
-typedef map<string, TypeFactoryMap> FacetFactoryMap;
-
-class factory : public Ice::ObjectFactory {
-public:
-	void addMap(const string& facet, ConfigElementFactoryPtr factory) {
-		FacetFactoryMap::iterator facetMap = _map.find(facet);
-		if (facetMap == _map.end()) {
-			_map[facet] = TypeFactoryMap();
-			facetMap = _map.find(facet);
-		}
-		(*facetMap).second[factory->ice_staticId()] = factory;
-	}
-	virtual Ice::ObjectPtr create(const string& type) {
-		cout << "factory called for type " << type << " with facet " << currentFacet << endl;
-		FacetFactoryMap::const_iterator facetMap = _map.find(currentFacet);
-		if (facetMap == _map.end()) {
-			return 0;
-		}
-		TypeFactoryMap::const_iterator typeMap = (*facetMap).second.find(type);
-		if (typeMap == (*facetMap).second.end()) {
-			return 0;
-		}
-		return (*typeMap).second->kablamo();
-	}
-	virtual void destroy() {
-	}
-private:
-	FacetFactoryMap _map;
-};
-
 void server::start(const std::string& name, const Ice::CommunicatorPtr& comm, const Ice::StringSeq& args) {
-	factory *fact = new factory();
-	fact->addMap(Hydra::SIP::V1::InterfaceVersion, new ConfigElementFactoryType<Hydra::SIP::V1::ConfigDTMF>());
-	fact->addMap(Hydra::SIP::V1::InterfaceVersion, new ConfigElementFactoryType<Hydra::SIP::V1::ConfigSDP>());
-	fact->addMap(Hydra::SIP::V1::InterfaceVersion, new ConfigElementFactoryType<Hydra::SIP::V1::ConfigT38>());
-	fact->addMap(Hydra::SIP::InterfaceVersion, new ConfigElementFactoryType<Hydra::SIP::ConfigDTMF>());
-	fact->addMap(Hydra::SIP::InterfaceVersion, new ConfigElementFactoryType<Hydra::SIP::ConfigSDP>());
-	fact->addMap(Hydra::SIP::InterfaceVersion, new ConfigElementFactoryType<Hydra::SIP::ConfigT38>());
-	fact->addMap(Hydra::SIP::InterfaceVersion, new ConfigElementFactoryType<Hydra::SIP::ConfigLanguage>());
-	comm->addObjectFactory(fact, "");
 	_adapter = comm->createObjectAdapter(name);
-	Ice::Identity id;
-	id.name = "EndpointManager";
+	Ice::Identity id = comm->stringToIdentity("EndpointManager");
 	Hydra::SIP::managerPtr mgr(new Hydra::SIP::manager(_adapter));
-	_adapter->addFacet(new interceptor(new Hydra::SIP::manager_v1(mgr)), id, Hydra::SIP::V1::InterfaceVersion);
-	_adapter->addFacet(new interceptor(new Hydra::SIP::manager_v2(mgr)), id, Hydra::SIP::InterfaceVersion);
+	_adapter->addFacet(new Hydra::SIP::manager_v1(mgr), id, Hydra::SIP::V1::InterfaceVersion);
+	_adapter->addFacet(new Hydra::SIP::manager_v2(mgr), id, Hydra::SIP::V2::InterfaceVersion);
 	_adapter->activate();
 }
 

Modified: techdemo/team/kpfleming/multi-version-server/ib
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/ib?view=diff&rev=584&r1=583&r2=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/ib (original)
+++ techdemo/team/kpfleming/multi-version-server/ib Thu Apr 15 07:17:07 2010
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-LD_LIBRARY_PATH=. icebox --Ice.Config=`dirname $0`/ib_cpp_${1}.config
+LD_LIBRARY_PATH=. /opt/Ice-3.4.0/bin/icebox --Ice.Config=`dirname $0`/ib_cpp_${1}.config

Modified: techdemo/team/kpfleming/multi-version-server/ib_cpp_both.config
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/ib_cpp_both.config?view=diff&rev=584&r1=583&r2=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/ib_cpp_both.config (original)
+++ techdemo/team/kpfleming/multi-version-server/ib_cpp_both.config Thu Apr 15 07:17:07 2010
@@ -1,7 +1,8 @@
+#Ice.Trace.Protocol=1
 IceBox.InheritProperties=1
 IceBox.LoadOrder=Server,Client
 IceBox.Service.Server=cpp_server:create
 Server.Endpoints=tcp -p 9000
 IceBox.UseSharedCommunicator.Server=1
-IceBox.Service.Client=cpp_client_v1:create
+IceBox.Service.Client=cpp_client_v2:create
 IceBox.UseSharedCommunicator.Client=0

Modified: techdemo/team/kpfleming/multi-version-server/sip_endpoint.ice
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/sip_endpoint.ice?view=diff&rev=584&r1=583&r2=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/sip_endpoint.ice (original)
+++ techdemo/team/kpfleming/multi-version-server/sip_endpoint.ice Thu Apr 15 07:17:07 2010
@@ -1,5 +1,6 @@
 module Hydra {
 	module SIP {
+	module V2 {
 		const string InterfaceVersion = "V2";
 
 		class Endpoint {
@@ -65,5 +66,6 @@
 		class ConfigLanguage extends ConfigElement {
 			string language;
 		};
+		};
 	};
 };

Added: techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice
URL: https://origsvn.digium.com/svn-view/hydra/techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice?view=auto&rev=584
==============================================================================
--- techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice (added)
+++ techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice Thu Apr 15 07:17:07 2010
@@ -1,0 +1,69 @@
+module Hydra {
+	module SIP {
+		const string InterfaceVersion = "V2";
+
+		class Endpoint {
+			int getIndex();
+		};
+
+		class ConfigElement {
+		};
+
+		dictionary<string, ConfigElement> ConfigElements;
+
+		struct EndpointConfig {
+			int index;
+			ConfigElements config;
+		};
+
+		sequence<EndpointConfig> MultiEndpointConfigElements;
+
+		sequence<Endpoint *> EndpointList;
+
+		exception ExcTest {};
+
+		class EndpointManager {
+			EndpointList getEndpoints();
+			ConfigElements getEndpointConfig(int index, ConfigElements config) throws ExcTest;
+			int setEndpointConfig(int index, ConfigElements config);
+			MultiEndpointConfigElements getMultiEndpointConfig(MultiEndpointConfigElements config);
+			int setMultiEndpointConfig(MultiEndpointConfigElements config);
+			bool V2Test();
+		};
+
+		enum DTMFMode {
+			DTMFInband,
+			DTMFRFC2833,
+			DTMFINFO,
+			DTMFAuto,
+			DTMFKPML,
+		};
+
+		class ConfigDTMF extends ConfigElement {
+			["defval:DTMFInband"] DTMFMode mode;
+			["defval:false"] bool RFC2833Compensate;
+		};
+
+		enum T38ErrorCorrectionMode {
+			T38ErrorCorrectionNone,
+			T38ErrorCorrectionRedundancy,
+			T38ErrorCorrectionFEC,
+		};
+
+		class ConfigT38 extends ConfigElement {
+			["defval:false"] bool enable;
+			["defval:T38ErrorCorrectionFEC"] T38ErrorCorrectionMode errorCorrection;
+			["defval:0"] int maxDatagram;
+		};
+
+		class ConfigSDP extends ConfigElement {
+			["defval:false"] bool ignoreVersion;
+			string sessionOwner;
+			string sessionName;
+		};
+
+		class ConfigLanguage extends ConfigElement {
+			string language;
+		};
+	};
+};

Propchange: techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice
------------------------------------------------------------------------------
    svn:keywords = 'Author Date Id Revision'

Propchange: techdemo/team/kpfleming/multi-version-server/sip_endpoint_v2_client.ice
------------------------------------------------------------------------------
    svn:mime-type = text/plain





More information about the asterisk-scf-commits mailing list