[hydra-commits] hydra/servicediscovery.git branch "master" updated.
Commits to the Hydra project code repositories
hydra-commits at lists.digium.com
Sat Jul 31 13:45:38 CDT 2010
branch "master" has been updated
via a34e64abc1d608f1a8a71a6c08e91f8080321ae6 (commit)
via 399ec84a8676c8b7abc282257ee06c4bbf87293f (commit)
via 399c00f0fc7ab2647af82e1f5f1359108a1c15f4 (commit)
via 1f1e6c1beb135866e162bb65e5686bf2961b8807 (commit)
via 5a3f41b156a10801b3540cbba40d28fc954bbc14 (commit)
via fca1ddc2e9b2832f25fc8ab03efc0567096b07f6 (commit)
via 16eeaba9c1199a555b148f0840c72f8c6b07696a (commit)
via 48be7e5f08fb3d733441f581887c2637bb30485c (commit)
via 175b4a001ae4f5b17ee1f1f6951468589ab99759 (commit)
via 99fd8a341c521102c5dfdc15009efed811999fa2 (commit)
via 7f9f1f52b50b0ae85f78f2d4595237cafc609524 (commit)
via e834a1333fe56e24f609676d5f908d498aa0a83c (commit)
via d2ede4bf3db033f2fee0532837d5c7d1c902156c (commit)
via 9e205497b5d73a48ffedbe4dc1c6b8e53fa5ca57 (commit)
from 877c67575cfda35230b40dfd2faec60101c8d1f9 (commit)
Summary of changes:
config/test_service_locator.config | 10 +-
slice/CMakeLists.txt | 6 +-
slice/service_discovery.ice | 63 --------
slice/service_discovery_events.ice | 25 ----
slice/service_locator.ice | 153 ++++++++++++++++++++
slice/service_locator_events.ice | 62 ++++++++
src/CMakeLists.txt | 6 +-
src/ServiceDiscoveryManagement.cpp | 98 -------------
src/ServiceDiscoveryManagement.h | 31 ----
src/ServiceLocator.cpp | 85 ++++++++----
src/ServiceLocatorManagement.cpp | 137 ++++++++++++++++++
src/ServiceLocatorManagement.h | 95 ++++++++++++
src/ServiceManagement.cpp | 106 ++++++++++----
src/ServiceManagement.h | 123 +++++++++++++---
test/CMakeLists.txt | 6 +-
...ServiceDiscovery.cpp => TestServiceLocator.cpp} | 52 ++++----
16 files changed, 728 insertions(+), 330 deletions(-)
delete mode 100644 slice/service_discovery.ice
delete mode 100644 slice/service_discovery_events.ice
create mode 100644 slice/service_locator.ice
create mode 100644 slice/service_locator_events.ice
delete mode 100644 src/ServiceDiscoveryManagement.cpp
delete mode 100644 src/ServiceDiscoveryManagement.h
create mode 100644 src/ServiceLocatorManagement.cpp
create mode 100644 src/ServiceLocatorManagement.h
rename test/{TestServiceDiscovery.cpp => TestServiceLocator.cpp} (87%)
- Log -----------------------------------------------------------------
commit a34e64abc1d608f1a8a71a6c08e91f8080321ae6
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 14:55:33 2010 -0300
Update configuration file based on renaming.
diff --git a/config/test_service_locator.config b/config/test_service_locator.config
index 42f6e5c..dcd04db 100644
--- a/config/test_service_locator.config
+++ b/config/test_service_locator.config
@@ -1,10 +1,10 @@
-# This is a configuration file used in conjunction with the service discovery test driver
+# This is a configuration file used in conjunction with the service locator test driver
-# Test endpoints for the service discovery management adapter
-ServiceDiscoveryManagementAdapter.Endpoints=tcp -p 5674
+# Test endpoints for the service locator management adapter
+ServiceLocatorManagementAdapter.Endpoints=tcp -p 5674
-# Test endpoints for the service discovery adapter
-ServiceDiscoveryAdapter.Endpoints=tcp -p 2657
+# Test endpoints for the service locator adapter
+ServiceLocatorAdapter.Endpoints=tcp -p 2657
# Test endpoints for IceStorm
TopicManager.Proxy=HydraIceStorm/TopicManager:default -p 10000
commit 399ec84a8676c8b7abc282257ee06c4bbf87293f
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 14:53:38 2010 -0300
Let's conform some more to the style guidelines!
diff --git a/src/ServiceManagement.cpp b/src/ServiceManagement.cpp
index 430283e..7e92651 100644
--- a/src/ServiceManagement.cpp
+++ b/src/ServiceManagement.cpp
@@ -1,3 +1,21 @@
+/*
+ * ZOMGZHYDRA?!? -- An open source telephony framework.
+ *
+ * Copyright (C) 2010, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.IcanhazURL.org for more information about
+ * the ZOMGZHYDRA?!? project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
#include <Ice/Ice.h>
#include <IceStorm/IceStorm.h>
@@ -10,26 +28,38 @@ using namespace Hydra::Location;
#include "ServiceLocatorManagement.h"
#include "ServiceManagement.h"
+/**
+ * Constructor for the ServiceManagementImpl class. This adds itself to the object adapter so the service can perform some management and
+ * also sends out an event for those that are listening.
+ */
ServiceManagementImpl::ServiceManagementImpl(ServiceLocatorManagementImpl* management, Ice::ObjectPrx service, Ice::ObjectAdapterPtr adapter,
EventsPrx service_discovery_topic, const string& guid)
- : suspended(false), _management(management), _service(service), _adapter(adapter), _service_discovery_topic(service_discovery_topic), _guid(guid)
+ : mSuspended(false), mManagement(management), mService(service), mAdapter(adapter), mLocatorTopic(service_discovery_topic), mGuid(guid)
{
- managementprx = ServiceManagementPrx::uncheckedCast(adapter->addWithUUID(this));
+ mManagementPrx = ServiceManagementPrx::uncheckedCast(mAdapter->addWithUUID(this));
- _service_discovery_topic->serviceRegistered(_guid);
+ mLocatorTopic->serviceRegistered(mGuid);
}
-/* This is the isSupported implementation for the service itself */
+/**
+ * An internal function which is called by the service locator to perform a locator parameters comparison
+ * at the service level.
+ *
+ * @param params A concrete class containing parameters describing the service that is trying to be found.
+ *
+ * @return A boolean value with true meaning the parameters are supported and false if not.
+ *
+ */
bool ServiceManagementImpl::isSupported(const ServiceLocatorParamsPtr& params)
{
/* If this service is suspended we can just skip the entire check and return false now, easy as pie */
- if (suspended) {
+ if (mSuspended) {
return false;
}
vector<ServiceLocatorParamsSpec>::iterator spec;
- for (vector<ServiceLocatorParamsSpec>::iterator spec = supported_discovery_params.begin(); spec != supported_discovery_params.end(); ++spec) {
+ for (vector<ServiceLocatorParamsSpec>::iterator spec = mSupportedLocatorParams.begin(); spec != mSupportedLocatorParams.end(); ++spec) {
if ((*spec).isSupported(params) == true) {
return true;
}
@@ -38,50 +68,70 @@ bool ServiceManagementImpl::isSupported(const ServiceLocatorParamsPtr& params)
return false;
}
-/* This is the isSupported implementation for the discovery parameters, a bit more specific */
+/**
+ * An internal function which is called by the service locator to perform a locator parameters comparison
+ * at the parameter and perhaps comparator level.
+ *
+ * @param params A concrete class containing parameters describing the service that is trying to be found.
+ *
+ * @return A boolean value with true meaning the parameters are supported and false if not.
+ *
+ */
bool ServiceLocatorParamsSpec::isSupported(const ServiceLocatorParamsPtr& params)
{
/* This is just a simple comparison that acts as a preliminary, and perhaps final, check */
- if (_params->category != params->category) {
+ if (mParams->category != params->category) {
return false;
}
/* If a comparator was provided then yield to it for a final yay or nay */
- if (!_compare_guid.empty()) {
- return _management->isSupported(_compare_guid, params);
+ if (!mCompareGuid.empty()) {
+ return mManagement->isSupported(mCompareGuid, params);
}
return true;
}
+/**
+ * Implementation of the addLocatorParams method as defined in service_locator.ice
+ */
void ServiceManagementImpl::addLocatorParams(const ServiceLocatorParamsPtr& params, const std::string& compare_guid, const Ice::Current&)
{
- ServiceLocatorParamsSpec spec(params, compare_guid, _management);
+ ServiceLocatorParamsSpec spec(params, compare_guid, mManagement);
- supported_discovery_params.push_back(spec);
+ mSupportedLocatorParams.push_back(spec);
}
+/**
+ * Implementation of the suspend method as defined in service_locator.ice
+ */
void ServiceManagementImpl::suspend(const Ice::Current&)
{
- suspended = true;
+ mSuspended = true;
- _service_discovery_topic->serviceSuspended(_guid);
+ mLocatorTopic->serviceSuspended(mGuid);
}
+/**
+ * Implementation of the unsuspend method as defined in service_locator.ice
+ */
void ServiceManagementImpl::unsuspend(const Ice::Current&)
{
- suspended = false;
+ mSuspended = false;
- _service_discovery_topic->serviceUnsuspended(_guid);
+ mLocatorTopic->serviceUnsuspended(mGuid);
}
+/**
+ * Implementation of the unregister method as defined in service_locator.ice
+ */
void ServiceManagementImpl::unregister(const Ice::Current&)
{
- _adapter->remove(managementprx->ice_getIdentity());
+ mAdapter->remove(mManagementPrx->ice_getIdentity());
- _management->removeService(this);
+ mManagement->removeService(this);
- _service_discovery_topic->serviceUnregistered(_guid);
+ mLocatorTopic->serviceUnregistered(mGuid);
}
diff --git a/src/ServiceManagement.h b/src/ServiceManagement.h
index 98738b6..baa8402 100644
--- a/src/ServiceManagement.h
+++ b/src/ServiceManagement.h
@@ -1,14 +1,54 @@
+/*
+ * ZOMGZHYDRA?!? -- An open source telephony framework.
+ *
+ * Copyright (C) 2010, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.IcanhazURL.org for more information about
+ * the ZOMGZHYDRA?!? project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
+#pragma once
+#ifndef _SERVICEMANAGEMENT_H
+#define _SERVICEMANAGEMENT_H
+
+/**
+ * Small internal class which is used to store information about supported parameters.
+ */
class ServiceLocatorParamsSpec {
public:
ServiceLocatorParamsSpec(const ServiceLocatorParamsPtr& params, const std::string& compare_guid, ServiceLocatorManagementImpl* management)
- : _params(params), _compare_guid(compare_guid), _management(management) { };
+ : mParams(params), mCompareGuid(compare_guid), mManagement(management) { };
bool isSupported(const ServiceLocatorParamsPtr&);
private:
- ServiceLocatorParamsPtr _params;
- std::string _compare_guid;
- ServiceLocatorManagementImpl* _management;
+ /**
+ * A pointer to a parameters structure which describes what is supported.
+ */
+ ServiceLocatorParamsPtr mParams;
+
+ /**
+ * A string containing the comparator uuid that should be used when comparing the parameters
+ * in a locator request to this class. If empty no comparator will be used.
+ */
+ std::string mCompareGuid;
+
+ /**
+ * A pointer to the service locator management implementation that instantiated this class.
+ */
+ ServiceLocatorManagementImpl* mManagement;
};
+/**
+ * An implementation of the ServiceManagement interface as defined in service_locator.ice
+ */
class ServiceManagementImpl : public ServiceManagement
{
public:
@@ -17,16 +57,59 @@ public:
void suspend(const Ice::Current&);
void unsuspend(const Ice::Current&);
void unregister(const Ice::Current&);
- Ice::ObjectPrx GetService(void) { return _service; };
- ServiceManagementPrx GetServiceManagementPrx(void) { return managementprx; };
+
+ /**
+ * Function which returns the remote proxy to this service.
+ */
+ Ice::ObjectPrx GetService(void) { return mService; };
+
+ /**
+ * Function which returns a local proxy to this service's management interface.
+ */
+ ServiceManagementPrx GetServiceManagementPrx(void) { return mManagementPrx; };
+
bool isSupported(const ServiceLocatorParamsPtr&);
private:
- bool suspended;
- ServiceLocatorManagementImpl* _management;
- Ice::ObjectPrx _service;
- Ice::ObjectAdapterPtr _adapter;
- ServiceManagementPrx managementprx;
- std::vector<ServiceLocatorParamsSpec> supported_discovery_params;
- EventsPrx _service_discovery_topic;
- std::string _guid;
+ /**
+ * A boolean value which is used to store the suspended state of this service.
+ */
+ bool mSuspended;
+
+ /**
+ * A pointer to the service locator management implementation that instantiated this call.
+ */
+ ServiceLocatorManagementImpl* mManagement;
+
+ /**
+ * A remote proxy to the service that is registered.
+ */
+ Ice::ObjectPrx mService;
+
+ /**
+ * A pointer to the object adapter that this service is available on.
+ */
+ Ice::ObjectAdapterPtr mAdapter;
+
+ /**
+ * A local proxy to this management service.
+ */
+ ServiceManagementPrx mManagementPrx;
+
+ /**
+ * A vector of locator parameters that this service supports.
+ */
+ std::vector<ServiceLocatorParamsSpec> mSupportedLocatorParams;
+
+ /**
+ * A proxy that can be used to publish events to the service locator topic.
+ */
+ EventsPrx mLocatorTopic;
+
+ /**
+ * A string which contains a unique identifier for this service. This is used
+ * in events and logging.
+ */
+ std::string mGuid;
};
+
+#endif
commit 399c00f0fc7ab2647af82e1f5f1359108a1c15f4
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 14:22:15 2010 -0300
Add some more comments to variables.
diff --git a/src/ServiceLocatorManagement.h b/src/ServiceLocatorManagement.h
index 7420305..bf5f57d 100644
--- a/src/ServiceLocatorManagement.h
+++ b/src/ServiceLocatorManagement.h
@@ -69,9 +69,26 @@ public:
bool isSupported(const std::string&, const ServiceLocatorParamsPtr&);
void removeService(ServiceManagementImpl*);
private:
+ /**
+ * Object adapter that our service management proxies originate from, it is houses the
+ * main management service.
+ */
Ice::ObjectAdapterPtr mAdapter;
+
+ /**
+ * A map of all the comparators that have been added by external components. The key
+ * is the unique identifier that they add themselves with.
+ */
std::map<std::string, ServiceLocatorComparator> mCompares;
+
+ /**
+ * A vector of all the services that have been added.
+ */
std::vector<ServiceManagementImpl*> mServices;
+
+ /**
+ * A proxy that can be used to publish locator events.
+ */
EventsPrx mLocatorTopic;
};
commit 1f1e6c1beb135866e162bb65e5686bf2961b8807
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 14:16:38 2010 -0300
Update to conform to style guidelines.
diff --git a/src/ServiceLocatorManagement.cpp b/src/ServiceLocatorManagement.cpp
index 480169d..bab5edb 100644
--- a/src/ServiceLocatorManagement.cpp
+++ b/src/ServiceLocatorManagement.cpp
@@ -1,3 +1,21 @@
+/*
+ * ZOMGZHYDRA?!? -- An open source telephony framework.
+ *
+ * Copyright (C) 2010, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.IcanhazURL.org for more information about
+ * the ZOMGZHYDRA?!? project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
#include <Ice/Ice.h>
#include <IceStorm/IceStorm.h>
@@ -10,11 +28,14 @@ using namespace Hydra::Location;
#include "ServiceLocatorManagement.h"
#include "ServiceManagement.h"
+/**
+ * Implementation of the locate method as defined in service_locator.ice
+ */
Ice::ObjectPrx ServiceLocatorManagementImpl::locate(const ServiceLocatorParamsPtr& params)
{
vector<ServiceManagementImpl*>::iterator service;
- for (vector<ServiceManagementImpl*>::iterator service = services.begin(); service != services.end(); ++service) {
+ for (vector<ServiceManagementImpl*>::iterator service = mServices.begin(); service != mServices.end(); ++service) {
if ((*service)->isSupported(params) == true) {
return (*service)->GetService();
}
@@ -23,12 +44,15 @@ Ice::ObjectPrx ServiceLocatorManagementImpl::locate(const ServiceLocatorParamsPt
throw ServiceNotFound();
}
+/**
+ * Implementation of the locateAll method as defined in service_locator.ice
+ */
Ice::ObjectProxySeq ServiceLocatorManagementImpl::locateAll(const ServiceLocatorParamsPtr& params)
{
Ice::ObjectProxySeq applicable_services;
vector<ServiceManagementImpl*>::iterator service;
- for (vector<ServiceManagementImpl*>::iterator service = services.begin(); service != services.end(); ++service) {
+ for (vector<ServiceManagementImpl*>::iterator service = mServices.begin(); service != mServices.end(); ++service) {
if ((*service)->isSupported(params) == true) {
applicable_services.push_back((*service)->GetService());
}
@@ -41,57 +65,72 @@ Ice::ObjectProxySeq ServiceLocatorManagementImpl::locateAll(const ServiceLocator
}
}
+/**
+ * Implementation of the addService method as defined in service_locator.ice
+ */
ServiceManagementPrx ServiceLocatorManagementImpl::addService(const Ice::ObjectPrx& service, const string& guid, const Ice::Current&)
{
- ServiceManagementImpl* new_service = new ServiceManagementImpl(this, service, _adapter, _service_discovery_topic, guid);
+ ServiceManagementImpl* new_service = new ServiceManagementImpl(this, service, mAdapter, mLocatorTopic, guid);
- services.push_back(new_service);
+ mServices.push_back(new_service);
return new_service->GetServiceManagementPrx();
}
+/**
+ * Implementation of the addCompare method as defined in service_locator.ice
+ */
void ServiceLocatorManagementImpl::addCompare(const string& guid, const ServiceLocatorParamsComparePrx& service, const Ice::Current&)
{
ServiceLocatorComparator new_comparator(service);
pair<map<string, ServiceLocatorComparator>::iterator, bool> insert_pair;
- insert_pair = compares.insert(pair<string, ServiceLocatorComparator>(guid, new_comparator));
+ insert_pair = mCompares.insert(pair<string, ServiceLocatorComparator>(guid, new_comparator));
if (insert_pair.second == false) {
throw DuplicateCompare();
}
- _service_discovery_topic->comparisonRegistered(guid);
+ mLocatorTopic->comparisonRegistered(guid);
};
+/**
+ * Implementation of the removeCompare method as defined in service_locator.ice
+ */
void ServiceLocatorManagementImpl::removeCompare(const string& guid, const Ice::Current&)
{
- int erased = compares.erase(guid);
+ int erased = mCompares.erase(guid);
if (!erased) {
throw CompareNotFound();
} else {
- _service_discovery_topic->comparisonUnregistered(guid);
+ mLocatorTopic->comparisonUnregistered(guid);
}
};
+/**
+ * Implementation of the isSupported method as defined in service_locator.ice
+ */
bool ServiceLocatorManagementImpl::isSupported(const string& compare_guid, const ServiceLocatorParamsPtr& params)
{
- map<string, ServiceLocatorComparator>::iterator comparator = compares.find(compare_guid);
+ map<string, ServiceLocatorComparator>::iterator comparator = mCompares.find(compare_guid);
- if (comparator == compares.end()) {
+ if (comparator == mCompares.end()) {
return false;
}
return (comparator->second).isSupported(params);
}
+/**
+ * Implementation of the removeService method as defined in service_locator.ice
+ */
void ServiceLocatorManagementImpl::removeService(ServiceManagementImpl* service)
{
vector<ServiceManagementImpl*>::iterator existing_service;
- for (vector<ServiceManagementImpl*>::iterator existing_service = services.begin(); existing_service != services.end(); ++existing_service) {
+ for (vector<ServiceManagementImpl*>::iterator existing_service = mServices.begin(); existing_service != mServices.end(); ++existing_service) {
if ((*existing_service) == service) {
- services.erase(existing_service);
+ mServices.erase(existing_service);
return;
}
}
diff --git a/src/ServiceLocatorManagement.h b/src/ServiceLocatorManagement.h
index 1ef5246..7420305 100644
--- a/src/ServiceLocatorManagement.h
+++ b/src/ServiceLocatorManagement.h
@@ -1,21 +1,66 @@
+/*
+ * ZOMGZHYDRA?!? -- An open source telephony framework.
+ *
+ * Copyright (C) 2010, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.IcanhazURL.org for more information about
+ * the ZOMGZHYDRA?!? project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
+#pragma once
+#ifndef _SERVICELOCATORMANAGEMENT_H
+#define _SERVICELOCATORMANAGEMENT_H
+
+/**
+ * Forward definition for the ServiceManagementImpl class. This gets used by the ServiceLocatorManagementImpl class.
+ */
class ServiceManagementImpl;
-/* This is a small data structure which wraps the comparator a bit, but really it just passes the isSupported call onwards */
+/**
+ * Small internal class which is used to store information about a comparator.
+ */
class ServiceLocatorComparator
{
public:
- ServiceLocatorComparator() { };
- ServiceLocatorComparator(ServiceLocatorParamsComparePrx compare) : _compare(compare) { };
- bool isSupported(const ServiceLocatorParamsPtr& params) { return _compare->isSupported(params); };
+ /**
+ * Constructor for the ServiceLocatorComparator class.
+ *
+ * @param compare A proxy to the comparator service we are wrapping.
+ */
+ ServiceLocatorComparator(ServiceLocatorParamsComparePrx compare) : mCompare(compare) { };
+
+ /**
+ * API call which forwards an isSupported over ICE to a remote comparator.
+ *
+ * @param params Service locator parameters that describe a locator request.
+ *
+ * @return A boolean value with true indicating the parameters are supported while false indicates otherwise.
+ */
+ bool isSupported(const ServiceLocatorParamsPtr& params) { return mCompare->isSupported(params); };
private:
- ServiceLocatorParamsComparePrx _compare;
+ /**
+ * A proxy to the comparator service that we are wrapping.
+ */
+ ServiceLocatorParamsComparePrx mCompare;
};
+/**
+ * Implementation of the ServiceLocatorManagement interface as defined in service_locator.ice
+ */
class ServiceLocatorManagementImpl : public ServiceLocatorManagement
{
public:
ServiceLocatorManagementImpl(Ice::ObjectAdapterPtr adapter, EventsPrx service_discovery_topic)
- : _adapter(adapter), _service_discovery_topic(service_discovery_topic) { };
+ : mAdapter(adapter), mLocatorTopic(service_discovery_topic) { };
Ice::ObjectPrx locate(const ServiceLocatorParamsPtr&);
Ice::ObjectProxySeq locateAll(const ServiceLocatorParamsPtr&);
ServiceManagementPrx addService(const Ice::ObjectPrx&, const std::string&, const Ice::Current&);
@@ -24,8 +69,10 @@ public:
bool isSupported(const std::string&, const ServiceLocatorParamsPtr&);
void removeService(ServiceManagementImpl*);
private:
- Ice::ObjectAdapterPtr _adapter;
- std::map<std::string, ServiceLocatorComparator> compares;
- std::vector<ServiceManagementImpl*> services;
- EventsPrx _service_discovery_topic;
+ Ice::ObjectAdapterPtr mAdapter;
+ std::map<std::string, ServiceLocatorComparator> mCompares;
+ std::vector<ServiceManagementImpl*> mServices;
+ EventsPrx mLocatorTopic;
};
+
+#endif
commit 5a3f41b156a10801b3540cbba40d28fc954bbc14
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 14:12:10 2010 -0300
Tweak the comments slightly.
diff --git a/src/ServiceLocator.cpp b/src/ServiceLocator.cpp
index a49774d..cef6971 100644
--- a/src/ServiceLocator.cpp
+++ b/src/ServiceLocator.cpp
@@ -69,7 +69,7 @@ int main(int argc, char* argv[])
}
/**
- * Implementation of the locate method for service locator requests.
+ * Implementation of the locate method as defined in service_locator.ice
*/
Ice::ObjectPrx ServiceLocatorImpl::locate(const ServiceLocatorParamsPtr& params, const Ice::Current&)
{
@@ -78,7 +78,7 @@ Ice::ObjectPrx ServiceLocatorImpl::locate(const ServiceLocatorParamsPtr& params,
}
/**
- * Implementation of the locateAll method for service locator requests.
+ * Implementation of the locateAll method as defined in service_locator.ice
*/
Ice::ObjectProxySeq ServiceLocatorImpl::locateAll(const ServiceLocatorParamsPtr& params, const Ice::Current&)
{
commit fca1ddc2e9b2832f25fc8ab03efc0567096b07f6
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 14:09:53 2010 -0300
Make ourselves adhere to the style guidelines some more.
diff --git a/src/ServiceLocator.cpp b/src/ServiceLocator.cpp
index b422e5c..a49774d 100644
--- a/src/ServiceLocator.cpp
+++ b/src/ServiceLocator.cpp
@@ -1,3 +1,21 @@
+/*
+ * ZOMGZHYDRA?!? -- An open source telephony framework.
+ *
+ * Copyright (C) 2010, Digium, Inc.
+ *
+ * Joshua Colp <jcolp at digium.com>
+ *
+ * See http://www.IcanhazURL.org for more information about
+ * the ZOMGZHYDRA?!? project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
#include <Ice/Ice.h>
#include <IceStorm/IceStorm.h>
@@ -10,6 +28,9 @@ using namespace Hydra::Location;
#include "ServiceLocatorManagement.h"
#include "ServiceManagement.h"
+/**
+ * Implementation of the Ice::Application class
+ */
class ServiceLocatorApp : public Ice::Application
{
public:
@@ -19,40 +40,54 @@ public:
private:
};
+/**
+ * Implementation of the ServiceLocator interface as defined in service_locator.ice
+ */
class ServiceLocatorImpl : public ServiceLocator
{
public:
- ServiceLocatorImpl(ServiceLocatorManagementImpl* LocatorServiceManagement) : _LocatorServiceManagement(LocatorServiceManagement) { };
+ ServiceLocatorImpl(ServiceLocatorManagementImpl* LocatorServiceManagement) : mLocatorServiceManagement(LocatorServiceManagement) { };
Ice::ObjectPrx locate(const ServiceLocatorParamsPtr&, const Ice::Current&);
Ice::ObjectProxySeq locateAll(const ServiceLocatorParamsPtr&, const Ice::Current&);
private:
- ServiceLocatorManagementImpl* _LocatorServiceManagement;
+ /**
+ * A pointer to the ServiceManagement implementation as that is where everything is actually
+ * stored. Our ServiceLocator implementation simply acts as a read-only frontend to it.
+ */
+ ServiceLocatorManagementImpl* mLocatorServiceManagement;
};
static ServiceLocatorApp app;
+/**
+ * Main entry point for our service locator application.
+ */
int main(int argc, char* argv[])
{
app.callbackOnInterrupt();
return app.main(argc, argv);
}
-/* Implementation of the locate method for service discovery */
+/**
+ * Implementation of the locate method for service locator requests.
+ */
Ice::ObjectPrx ServiceLocatorImpl::locate(const ServiceLocatorParamsPtr& params, const Ice::Current&)
{
- /* This API call forwards into the management implementation, it is separated to provide a level of security */
- return _LocatorServiceManagement->locate(params);
+ /* This API call forwards into the management implementation, it is separated to provide a level of security. */
+ return mLocatorServiceManagement->locate(params);
}
-/* Implementation of the locateAll method for service discovery */
+/**
+ * Implementation of the locateAll method for service locator requests.
+ */
Ice::ObjectProxySeq ServiceLocatorImpl::locateAll(const ServiceLocatorParamsPtr& params, const Ice::Current&)
{
- /* This API call forwards into the management implementation, it is separated to provide a level of security */
- return _LocatorServiceManagement->locateAll(params);
+ /* This API call forwards into the management implementation, it is separated to provide a level of security. */
+ return mLocatorServiceManagement->locateAll(params);
}
/**
- * Overload of the Ice::Application::run method.
+ * Overload of the Ice::Application::run method.
*/
int ServiceLocatorApp::run(int argc, char* argv[])
{
commit 16eeaba9c1199a555b148f0840c72f8c6b07696a
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:41:36 2010 -0300
Update test portion to Locator.
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 90dcb4d..200abb7 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,8 +1,8 @@
# Create the actual standalone service locator test driver component
hydra_component_init(service_locator_test CXX)
-hydra_component_add_slice(service_locator_test service_discovery)
-hydra_component_add_slice(service_locator_test service_discovery_events)
-hydra_component_add_file(service_locator_test TestServiceDiscovery.cpp)
+hydra_component_add_slice(service_locator_test service_locator)
+hydra_component_add_slice(service_locator_test service_locator_events)
+hydra_component_add_file(service_locator_test TestServiceLocator.cpp)
hydra_component_add_ice_libraries(service_locator_test IceStorm)
hydra_component_add_boost_libraries(service_locator_test unit_test_framework)
hydra_component_build_standalone(service_locator_test)
diff --git a/test/TestServiceDiscovery.cpp b/test/TestServiceLocator.cpp
similarity index 87%
rename from test/TestServiceDiscovery.cpp
rename to test/TestServiceLocator.cpp
index 70798b4..706b160 100644
--- a/test/TestServiceDiscovery.cpp
+++ b/test/TestServiceLocator.cpp
@@ -1,5 +1,5 @@
#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MODULE ServiceDiscoveryTestSuite
+#define BOOST_TEST_MODULE ServiceLocatorTestSuite
#define BOOST_TEST_NO_MAIN
#include <boost/test/unit_test.hpp>
@@ -7,19 +7,19 @@
#include <Ice/Ice.h>
-#include "service_discovery.h"
-#include "service_discovery_events.h"
+#include "service_locator.h"
+#include "service_locator_events.h"
using namespace std;
-using namespace Hydra::Discovery;
+using namespace Hydra::Location;
/* A basic compare service implementation that always returns true, this is registered as both a compare service
* and a regular service during testing.
*/
-class TestCompareServiceImpl : public ServiceDiscoveryParamsCompare
+class TestCompareServiceImpl : public ServiceLocatorParamsCompare
{
public:
- bool isSupported(const ServiceDiscoveryParamsPtr&, const Ice::Current&) { return true; };
+ bool isSupported(const ServiceLocatorParamsPtr&, const Ice::Current&) { return true; };
};
/* Cache the command line arguments so that Ice can be initialized within the global fixture. */
@@ -48,19 +48,19 @@ public:
Ice::ObjectAdapterPtr adapter;
/* A proxy to the management service */
- ServiceDiscoveryManagementPrx management;
+ ServiceLocatorManagementPrx management;
/* A proxy to the actual locate service */
- ServiceDiscoveryPrx discovery;
+ ServiceLocatorPrx discovery;
/* A proxy to our own compare service, registered as both a compare service and as a regular service */
- ServiceDiscoveryParamsComparePrx compare;
+ ServiceLocatorParamsComparePrx compare;
/* A proxy to the service specific management interface for our compare service we registered */
ServiceManagementPrx compare_management;
/* A proxy we received from service discovery for our own compare service */
- ServiceDiscoveryParamsComparePrx found_compare;
+ ServiceLocatorParamsComparePrx found_compare;
/* Common implementation for locating a service */
bool FindService(string category) {
@@ -68,11 +68,11 @@ public:
try {
/* Setup our parameters, for now we are simply using test as the category */
- ServiceDiscoveryParamsPtr params = new ServiceDiscoveryParams;
+ ServiceLocatorParamsPtr params = new ServiceLocatorParams;
params->category = category;
/* Actually do the locate request */
- found_compare = ServiceDiscoveryParamsComparePrx::uncheckedCast(discovery->locate(params));
+ found_compare = ServiceLocatorParamsComparePrx::uncheckedCast(discovery->locate(params));
/* If we get here we didn't get an exception back telling us no service found... which is wrong! */
} catch (const ServiceNotFound&) {
@@ -91,7 +91,7 @@ public:
bool found = true;
try {
- ServiceDiscoveryParamsPtr params = new ServiceDiscoveryParams;
+ ServiceLocatorParamsPtr params = new ServiceLocatorParams;
params->category = category;
Ice::ObjectProxySeq services = discovery->locateAll(params);
@@ -121,7 +121,7 @@ struct GlobalIceFixture
{
GlobalIceFixture()
{
- BOOST_TEST_MESSAGE("Setting up ServiceDiscovery test fixture");
+ BOOST_TEST_MESSAGE("Setting up ServiceLocator test fixture");
::boost::debug::detect_memory_leaks(false);
::boost::unit_test::unit_test_log.set_stream( std::cout );
@@ -133,21 +133,21 @@ struct GlobalIceFixture
Testbed.adapter = Testbed.communicator_incoming->createObjectAdapterWithEndpoints("CompareServiceAdapter", "default");
- ServiceDiscoveryParamsComparePtr CompareService = new TestCompareServiceImpl();
+ ServiceLocatorParamsComparePtr CompareService = new TestCompareServiceImpl();
- Testbed.compare = ServiceDiscoveryParamsComparePrx::uncheckedCast(Testbed.adapter->addWithUUID(CompareService));
+ Testbed.compare = ServiceLocatorParamsComparePrx::uncheckedCast(Testbed.adapter->addWithUUID(CompareService));
Testbed.adapter->activate();
Testbed.communicator_outgoing = Ice::initialize(mCachedArgs.argc, mCachedArgs.argv);
- Testbed.management = ServiceDiscoveryManagementPrx::checkedCast(Testbed.communicator_outgoing->stringToProxy("DiscoveryServiceManagement:tcp -p 5674"));
+ Testbed.management = ServiceLocatorManagementPrx::checkedCast(Testbed.communicator_outgoing->stringToProxy("LocatorServiceManagement:tcp -p 5674"));
if (!Testbed.management) {
throw "Invalid service discovery management proxy";
}
- Testbed.discovery = ServiceDiscoveryPrx::checkedCast(Testbed.communicator_outgoing->stringToProxy("DiscoveryService:tcp -p 2657"));
+ Testbed.discovery = ServiceLocatorPrx::checkedCast(Testbed.communicator_outgoing->stringToProxy("LocatorService:tcp -p 2657"));
if (!Testbed.discovery) {
throw "Invalid service discovery proxy";
@@ -263,15 +263,15 @@ BOOST_AUTO_TEST_CASE(ServicesNotFoundAfterAdd)
/**
* Confirm that we can add discover parameters without a compare service.
*/
-BOOST_AUTO_TEST_CASE(AddDiscoveryParamsWithoutCompareService)
+BOOST_AUTO_TEST_CASE(AddLocatorParamsWithoutCompareService)
{
bool added = false;
try {
- ServiceDiscoveryParamsPtr params = new ServiceDiscoveryParams;
+ ServiceLocatorParamsPtr params = new ServiceLocatorParams;
params->category = "test";
- Testbed.compare_management->addDiscoveryParams(params, "");
+ Testbed.compare_management->addLocatorParams(params, "");
added = true;
} catch (const Ice::Exception &e) {
@@ -369,15 +369,15 @@ BOOST_AUTO_TEST_CASE(AddDuplicateCompare)
/**
* Confirm that we can add discovery parameters with a compare service.
*/
-BOOST_AUTO_TEST_CASE(AddDiscoveryParamsWithCompareService)
+BOOST_AUTO_TEST_CASE(AddLocatorParamsWithCompareService)
{
bool added = false;
try {
- ServiceDiscoveryParamsPtr params = new ServiceDiscoveryParams;
+ ServiceLocatorParamsPtr params = new ServiceLocatorParams;
params->category = "test2";
- Testbed.compare_management->addDiscoveryParams(params, "testcompare");
+ Testbed.compare_management->addLocatorParams(params, "testcompare");
added = true;
} catch (const Ice::Exception &e) {
@@ -424,12 +424,12 @@ BOOST_AUTO_TEST_CASE(UseServiceFoundWithCompareService)
*/
BOOST_AUTO_TEST_CASE(FindMultipleServices)
{
- ServiceDiscoveryParamsPtr params = new ServiceDiscoveryParams;
+ ServiceLocatorParamsPtr params = new ServiceLocatorParams;
ServiceManagementPrx compare_management = Testbed.management->addService(Testbed.compare, "testcompare2");
params->category = "test";
- compare_management->addDiscoveryParams(params, "");
+ compare_management->addLocatorParams(params, "");
bool found = Testbed.FindServices("test", 2);
commit 48be7e5f08fb3d733441f581887c2637bb30485c
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:40:12 2010 -0300
Massive destruction of 'Discovery' in favor of 'Locator'
diff --git a/slice/service_discovery.ice b/slice/service_discovery.ice
deleted file mode 100644
index 31e70c5..0000000
--- a/slice/service_discovery.ice
+++ /dev/null
@@ -1,63 +0,0 @@
-#include <Ice/BuiltinSequences.ice>
-
-module Hydra {
-
- module Discovery {
-
- /* This exception is used for service discovery requests to indicate that no service could be found */
- exception ServiceNotFound {
- };
-
- /* This exception is used for indicating that a comparator is already registered with a given guid */
- exception DuplicateCompare {
- };
-
- /* This exception is used for indicating that a compare service was not found */
- exception CompareNotFound {
- };
-
- /* This is a generic service discovery class that more specific parameter classes can extend */
- class ServiceDiscoveryParams {
- /* Basic category, bridge/channel service/etc */
- string category;
- };
-
- /* Interface to do service discovery requests */
- interface ServiceDiscovery {
- /* Perform a service discovery request using provided parameters and return a single result */
- idempotent Object *locate(ServiceDiscoveryParams params) throws ServiceNotFound;
- /* Perform a service discovery request using provided parameters and return all results */
- idempotent Ice::ObjectProxySeq locateAll(ServiceDiscoveryParams params) throws ServiceNotFound;
- };
-
- /* Interface to the service discovery component to manipulate service related things */
- interface ServiceManagement {
- /* API call which adds parameters so that this service can be discovered */
- void addDiscoveryParams(ServiceDiscoveryParams params, string compareguid);
- /* API call which suspends this service from being discovered */
- void suspend();
- /* API call which unsuspends this service from being discovered */
- void unsuspend();
- /* API call which unregisters a service from service discovery */
- void unregister();
- };
-
- /* Interface to an external component to perform discovery parameter comparison */
- interface ServiceDiscoveryParamsCompare {
- /* API call which determines whether parameters are accepted or not */
- bool isSupported(ServiceDiscoveryParams params);
- };
-
- /* Interface to do service discovery management (adding of services and compare components) */
- interface ServiceDiscoveryManagement {
- /* API call which adds a service to service discovery, still requires parameters to be added though */
- ServiceManagement *addService(Object *service, string guid);
- /* API call which adds a comparison service to service discovery */
- void addCompare(string compareguid, ServiceDiscoveryParamsCompare *compare) throws DuplicateCompare;
- /* API call which removes a comparison service from service discovery */
- void removeCompare(string compareguid) throws CompareNotFound;
- };
-
- };
-
-};
diff --git a/slice/service_discovery_events.ice b/slice/service_discovery_events.ice
deleted file mode 100644
index e3c6249..0000000
--- a/slice/service_discovery_events.ice
+++ /dev/null
@@ -1,25 +0,0 @@
-module Hydra {
-
- module Discovery {
-
- /* Topic used for service discovery events */
- const string TOPIC="::hydra::service::discovery";
-
- interface Events {
- /* Event that is fired when a comparison service is registered */
- void ComparisonRegistered(string guid);
- /* Event that is fired when a comparison service is unregistered */
- void ComparisonUnregistered(string guid);
- /* Event that is fired when a service is registered */
- void ServiceRegistered(string guid);
- /* Event that is fired when a service is unregistered */
- void ServiceUnregistered(string guid);
- /* Event that is fired when a service is suspended */
- void ServiceSuspended(string guid);
- /* Event that is fired when a service is unsuspended */
- void ServiceUnsuspended(string guid);
- };
-
- };
-
-};
diff --git a/slice/service_locator.ice b/slice/service_locator.ice
index 70c9a1d..042b9a3 100644
--- a/slice/service_locator.ice
+++ b/slice/service_locator.ice
@@ -78,7 +78,7 @@ module Location
* comparison to determine whether supplied parameters in a locator request
* are truly supported or not. This is optional.
*/
- void addDiscoveryParams(ServiceLocatorParams params, string compareguid);
+ void addLocatorParams(ServiceLocatorParams params, string compareguid);
/**
* Method which suspends this service from being considered when a locator request
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 186c7d0..ea5d80e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -3,7 +3,7 @@ hydra_component_init(service_locator CXX)
hydra_component_add_slice(service_locator service_locator)
hydra_component_add_slice(service_locator service_locator_events)
hydra_component_add_file(service_locator ServiceLocator.cpp)
-hydra_component_add_file(service_locator ServiceDiscoveryManagement.cpp)
+hydra_component_add_file(service_locator ServiceLocatorManagement.cpp)
hydra_component_add_file(service_locator ServiceManagement.cpp)
hydra_component_add_ice_libraries(service_locator IceStorm)
hydra_component_build_standalone(service_locator)
diff --git a/src/ServiceDiscoveryManagement.h b/src/ServiceDiscoveryManagement.h
deleted file mode 100644
index 4cc7947..0000000
--- a/src/ServiceDiscoveryManagement.h
+++ /dev/null
@@ -1,31 +0,0 @@
-class ServiceManagementImpl;
-
-/* This is a small data structure which wraps the comparator a bit, but really it just passes the isSupported call onwards */
-class ServiceDiscoveryComparator
-{
-public:
- ServiceDiscoveryComparator() { };
- ServiceDiscoveryComparator(ServiceDiscoveryParamsComparePrx compare) : _compare(compare) { };
- bool isSupported(const ServiceDiscoveryParamsPtr& params) { return _compare->isSupported(params); };
-private:
- ServiceDiscoveryParamsComparePrx _compare;
-};
-
-class ServiceDiscoveryManagementImpl : public ServiceDiscoveryManagement
-{
-public:
- ServiceDiscoveryManagementImpl(Ice::ObjectAdapterPtr adapter, EventsPrx service_discovery_topic)
- : _adapter(adapter), _service_discovery_topic(service_discovery_topic) { };
- Ice::ObjectPrx locate(const ServiceDiscoveryParamsPtr&);
- Ice::ObjectProxySeq locateAll(const ServiceDiscoveryParamsPtr&);
- ServiceManagementPrx addService(const Ice::ObjectPrx&, const std::string&, const Ice::Current&);
- void addCompare(const std::string&, const ServiceDiscoveryParamsComparePrx&, const Ice::Current&);
- void removeCompare(const std::string&, const Ice::Current&);
- bool isSupported(const std::string&, const ServiceDiscoveryParamsPtr&);
- void removeService(ServiceManagementImpl*);
-private:
- Ice::ObjectAdapterPtr _adapter;
- std::map<std::string, ServiceDiscoveryComparator> compares;
- std::vector<ServiceManagementImpl*> services;
- EventsPrx _service_discovery_topic;
-};
diff --git a/src/ServiceLocator.cpp b/src/ServiceLocator.cpp
index dc45c1f..b422e5c 100644
--- a/src/ServiceLocator.cpp
+++ b/src/ServiceLocator.cpp
@@ -1,13 +1,13 @@
#include <Ice/Ice.h>
#include <IceStorm/IceStorm.h>
-#include "service_discovery.h"
-#include "service_discovery_events.h"
+#include "service_locator.h"
+#include "service_locator_events.h"
using namespace std;
-using namespace Hydra::Discovery;
+using namespace Hydra::Location;
-#include "ServiceDiscoveryManagement.h"
+#include "ServiceLocatorManagement.h"
#include "ServiceManagement.h"
class ServiceLocatorApp : public Ice::Application
@@ -19,14 +19,14 @@ public:
private:
};
-class ServiceDiscoveryImpl : public ServiceDiscovery
+class ServiceLocatorImpl : public ServiceLocator
{
public:
- ServiceDiscoveryImpl(ServiceDiscoveryManagementImpl* DiscoveryServiceManagement) : _DiscoveryServiceManagement(DiscoveryServiceManagement) { };
- Ice::ObjectPrx locate(const ServiceDiscoveryParamsPtr&, const Ice::Current&);
- Ice::ObjectProxySeq locateAll(const ServiceDiscoveryParamsPtr&, const Ice::Current&);
+ ServiceLocatorImpl(ServiceLocatorManagementImpl* LocatorServiceManagement) : _LocatorServiceManagement(LocatorServiceManagement) { };
+ Ice::ObjectPrx locate(const ServiceLocatorParamsPtr&, const Ice::Current&);
+ Ice::ObjectProxySeq locateAll(const ServiceLocatorParamsPtr&, const Ice::Current&);
private:
- ServiceDiscoveryManagementImpl* _DiscoveryServiceManagement;
+ ServiceLocatorManagementImpl* _LocatorServiceManagement;
};
static ServiceLocatorApp app;
@@ -38,17 +38,17 @@ int main(int argc, char* argv[])
}
/* Implementation of the locate method for service discovery */
-Ice::ObjectPrx ServiceDiscoveryImpl::locate(const ServiceDiscoveryParamsPtr& params, const Ice::Current&)
+Ice::ObjectPrx ServiceLocatorImpl::locate(const ServiceLocatorParamsPtr& params, const Ice::Current&)
{
/* This API call forwards into the management implementation, it is separated to provide a level of security */
- return _DiscoveryServiceManagement->locate(params);
+ return _LocatorServiceManagement->locate(params);
}
/* Implementation of the locateAll method for service discovery */
-Ice::ObjectProxySeq ServiceDiscoveryImpl::locateAll(const ServiceDiscoveryParamsPtr& params, const Ice::Current&)
+Ice::ObjectProxySeq ServiceLocatorImpl::locateAll(const ServiceLocatorParamsPtr& params, const Ice::Current&)
{
/* This API call forwards into the management implementation, it is separated to provide a level of security */
- return _DiscoveryServiceManagement->locateAll(params);
+ return _LocatorServiceManagement->locateAll(params);
}
/**
@@ -67,7 +67,7 @@ int ServiceLocatorApp::run(int argc, char* argv[])
}
Ice::PropertiesPtr props = communicator()->getProperties();
- string topicName = props->getProperty("ServiceDiscovery.TopicName");
+ string topicName = props->getProperty("ServiceLocator.TopicName");
if (topicName.empty()) {
topicName = "::hydra::service::discovery";
@@ -93,21 +93,21 @@ int ServiceLocatorApp::run(int argc, char* argv[])
/* Management and discovery use separate adapters to provide a level of security, management may want to be protected so arbitrary
* people can't inject bad services into the infrastructure while discovery as a read only function may be allowed to all.
*/
- Ice::ObjectAdapterPtr management_adapter = communicator()->createObjectAdapter("ServiceDiscoveryManagementAdapter");
+ Ice::ObjectAdapterPtr management_adapter = communicator()->createObjectAdapter("ServiceLocatorManagementAdapter");
- ServiceDiscoveryManagementImpl* DiscoveryServiceManagement = new ServiceDiscoveryManagementImpl(management_adapter, service_discovery_topic);
+ ServiceLocatorManagementImpl* LocatorServiceManagement = new ServiceLocatorManagementImpl(management_adapter, service_discovery_topic);
- management_adapter->add(DiscoveryServiceManagement, communicator()->stringToIdentity("DiscoveryServiceManagement"));
+ management_adapter->add(LocatorServiceManagement, communicator()->stringToIdentity("LocatorServiceManagement"));
management_adapter->activate();
cout << "Activated service discovery management." << endl;
- Ice::ObjectAdapterPtr discovery_adapter = communicator()->createObjectAdapter("ServiceDiscoveryAdapter");
+ Ice::ObjectAdapterPtr discovery_adapter = communicator()->createObjectAdapter("ServiceLocatorAdapter");
- ServiceDiscoveryPtr DiscoveryService = new ServiceDiscoveryImpl(DiscoveryServiceManagement);
+ ServiceLocatorPtr LocatorService = new ServiceLocatorImpl(LocatorServiceManagement);
- discovery_adapter->add(DiscoveryService, communicator()->stringToIdentity("DiscoveryService"));
+ discovery_adapter->add(LocatorService, communicator()->stringToIdentity("LocatorService"));
discovery_adapter->activate();
diff --git a/src/ServiceDiscoveryManagement.cpp b/src/ServiceLocatorManagement.cpp
similarity index 55%
rename from src/ServiceDiscoveryManagement.cpp
rename to src/ServiceLocatorManagement.cpp
index 8784812..480169d 100644
--- a/src/ServiceDiscoveryManagement.cpp
+++ b/src/ServiceLocatorManagement.cpp
@@ -1,16 +1,16 @@
#include <Ice/Ice.h>
#include <IceStorm/IceStorm.h>
-#include "service_discovery.h"
-#include "service_discovery_events.h"
+#include "service_locator.h"
+#include "service_locator_events.h"
using namespace std;
-using namespace Hydra::Discovery;
+using namespace Hydra::Location;
-#include "ServiceDiscoveryManagement.h"
+#include "ServiceLocatorManagement.h"
#include "ServiceManagement.h"
-Ice::ObjectPrx ServiceDiscoveryManagementImpl::locate(const ServiceDiscoveryParamsPtr& params)
+Ice::ObjectPrx ServiceLocatorManagementImpl::locate(const ServiceLocatorParamsPtr& params)
{
vector<ServiceManagementImpl*>::iterator service;
@@ -23,7 +23,7 @@ Ice::ObjectPrx ServiceDiscoveryManagementImpl::locate(const ServiceDiscoveryPara
throw ServiceNotFound();
}
-Ice::ObjectProxySeq ServiceDiscoveryManagementImpl::locateAll(const ServiceDiscoveryParamsPtr& params)
+Ice::ObjectProxySeq ServiceLocatorManagementImpl::locateAll(const ServiceLocatorParamsPtr& params)
{
Ice::ObjectProxySeq applicable_services;
vector<ServiceManagementImpl*>::iterator service;
@@ -41,7 +41,7 @@ Ice::ObjectProxySeq ServiceDiscoveryManagementImpl::locateAll(const ServiceDisco
}
}
-ServiceManagementPrx ServiceDiscoveryManagementImpl::addService(const Ice::ObjectPrx& service, const string& guid, const Ice::Current&)
+ServiceManagementPrx ServiceLocatorManagementImpl::addService(const Ice::ObjectPrx& service, const string& guid, const Ice::Current&)
{
ServiceManagementImpl* new_service = new ServiceManagementImpl(this, service, _adapter, _service_discovery_topic, guid);
@@ -50,34 +50,34 @@ ServiceManagementPrx ServiceDiscoveryManagementImpl::addService(const Ice::Objec
return new_service->GetServiceManagementPrx();
}
-void ServiceDiscoveryManagementImpl::addCompare(const string& guid, const ServiceDiscoveryParamsComparePrx& service, const Ice::Current&)
+void ServiceLocatorManagementImpl::addCompare(const string& guid, const ServiceLocatorParamsComparePrx& service, const Ice::Current&)
{
- ServiceDiscoveryComparator new_comparator(service);
+ ServiceLocatorComparator new_comparator(service);
- pair<map<string, ServiceDiscoveryComparator>::iterator, bool> insert_pair;
- insert_pair = compares.insert(pair<string, ServiceDiscoveryComparator>(guid, new_comparator));
+ pair<map<string, ServiceLocatorComparator>::iterator, bool> insert_pair;
+ insert_pair = compares.insert(pair<string, ServiceLocatorComparator>(guid, new_comparator));
if (insert_pair.second == false) {
throw DuplicateCompare();
}
- _service_discovery_topic->ComparisonRegistered(guid);
+ _service_discovery_topic->comparisonRegistered(guid);
};
-void ServiceDiscoveryManagementImpl::removeCompare(const string& guid, const Ice::Current&)
+void ServiceLocatorManagementImpl::removeCompare(const string& guid, const Ice::Current&)
{
int erased = compares.erase(guid);
if (!erased) {
throw CompareNotFound();
} else {
- _service_discovery_topic->ComparisonUnregistered(guid);
+ _service_discovery_topic->comparisonUnregistered(guid);
}
};
-bool ServiceDiscoveryManagementImpl::isSupported(const string& compare_guid, const ServiceDiscoveryParamsPtr& params)
+bool ServiceLocatorManagementImpl::isSupported(const string& compare_guid, const ServiceLocatorParamsPtr& params)
{
- map<string, ServiceDiscoveryComparator>::iterator comparator = compares.find(compare_guid);
+ map<string, ServiceLocatorComparator>::iterator comparator = compares.find(compare_guid);
if (comparator == compares.end()) {
return false;
@@ -86,7 +86,7 @@ bool ServiceDiscoveryManagementImpl::isSupported(const string& compare_guid, con
return (comparator->second).isSupported(params);
}
-void ServiceDiscoveryManagementImpl::removeService(ServiceManagementImpl* service)
+void ServiceLocatorManagementImpl::removeService(ServiceManagementImpl* service)
{
vector<ServiceManagementImpl*>::iterator existing_service;
for (vector<ServiceManagementImpl*>::iterator existing_service = services.begin(); existing_service != services.end(); ++existing_service) {
diff --git a/src/ServiceLocatorManagement.h b/src/ServiceLocatorManagement.h
new file mode 100644
index 0000000..1ef5246
--- /dev/null
+++ b/src/ServiceLocatorManagement.h
@@ -0,0 +1,31 @@
+class ServiceManagementImpl;
+
+/* This is a small data structure which wraps the comparator a bit, but really it just passes the isSupported call onwards */
+class ServiceLocatorComparator
+{
+public:
+ ServiceLocatorComparator() { };
+ ServiceLocatorComparator(ServiceLocatorParamsComparePrx compare) : _compare(compare) { };
+ bool isSupported(const ServiceLocatorParamsPtr& params) { return _compare->isSupported(params); };
+private:
+ ServiceLocatorParamsComparePrx _compare;
+};
+
+class ServiceLocatorManagementImpl : public ServiceLocatorManagement
+{
+public:
+ ServiceLocatorManagementImpl(Ice::ObjectAdapterPtr adapter, EventsPrx service_discovery_topic)
+ : _adapter(adapter), _service_discovery_topic(service_discovery_topic) { };
+ Ice::ObjectPrx locate(const ServiceLocatorParamsPtr&);
+ Ice::ObjectProxySeq locateAll(const ServiceLocatorParamsPtr&);
+ ServiceManagementPrx addService(const Ice::ObjectPrx&, const std::string&, const Ice::Current&);
+ void addCompare(const std::string&, const ServiceLocatorParamsComparePrx&, const Ice::Current&);
+ void removeCompare(const std::string&, const Ice::Current&);
+ bool isSupported(const std::string&, const ServiceLocatorParamsPtr&);
+ void removeService(ServiceManagementImpl*);
+private:
+ Ice::ObjectAdapterPtr _adapter;
+ std::map<std::string, ServiceLocatorComparator> compares;
+ std::vector<ServiceManagementImpl*> services;
+ EventsPrx _service_discovery_topic;
+};
diff --git a/src/ServiceManagement.cpp b/src/ServiceManagement.cpp
index 44364b5..430283e 100644
--- a/src/ServiceManagement.cpp
+++ b/src/ServiceManagement.cpp
@@ -1,35 +1,35 @@
#include <Ice/Ice.h>
#include <IceStorm/IceStorm.h>
-#include "service_discovery.h"
-#include "service_discovery_events.h"
+#include "service_locator.h"
+#include "service_locator_events.h"
using namespace std;
-using namespace Hydra::Discovery;
+using namespace Hydra::Location;
-#include "ServiceDiscoveryManagement.h"
+#include "ServiceLocatorManagement.h"
#include "ServiceManagement.h"
-ServiceManagementImpl::ServiceManagementImpl(ServiceDiscoveryManagementImpl* management, Ice::ObjectPrx service, Ice::ObjectAdapterPtr adapter,
+ServiceManagementImpl::ServiceManagementImpl(ServiceLocatorManagementImpl* management, Ice::ObjectPrx service, Ice::ObjectAdapterPtr adapter,
EventsPrx service_discovery_topic, const string& guid)
: suspended(false), _management(management), _service(service), _adapter(adapter), _service_discovery_topic(service_discovery_topic), _guid(guid)
{
managementprx = ServiceManagementPrx::uncheckedCast(adapter->addWithUUID(this));
- _service_discovery_topic->ServiceRegistered(_guid);
+ _service_discovery_topic->serviceRegistered(_guid);
}
/* This is the isSupported implementation for the service itself */
-bool ServiceManagementImpl::isSupported(const ServiceDiscoveryParamsPtr& params)
+bool ServiceManagementImpl::isSupported(const ServiceLocatorParamsPtr& params)
{
/* If this service is suspended we can just skip the entire check and return false now, easy as pie */
if (suspended) {
return false;
}
- vector<ServiceDiscoveryParamsSpec>::iterator spec;
+ vector<ServiceLocatorParamsSpec>::iterator spec;
- for (vector<ServiceDiscoveryParamsSpec>::iterator spec = supported_discovery_params.begin(); spec != supported_discovery_params.end(); ++spec) {
+ for (vector<ServiceLocatorParamsSpec>::iterator spec = supported_discovery_params.begin(); spec != supported_discovery_params.end(); ++spec) {
if ((*spec).isSupported(params) == true) {
return true;
}
@@ -39,7 +39,7 @@ bool ServiceManagementImpl::isSupported(const ServiceDiscoveryParamsPtr& params)
}
/* This is the isSupported implementation for the discovery parameters, a bit more specific */
-bool ServiceDiscoveryParamsSpec::isSupported(const ServiceDiscoveryParamsPtr& params)
+bool ServiceLocatorParamsSpec::isSupported(const ServiceLocatorParamsPtr& params)
{
/* This is just a simple comparison that acts as a preliminary, and perhaps final, check */
if (_params->category != params->category) {
@@ -54,9 +54,9 @@ bool ServiceDiscoveryParamsSpec::isSupported(const ServiceDiscoveryParamsPtr& pa
return true;
}
-void ServiceManagementImpl::addDiscoveryParams(const ServiceDiscoveryParamsPtr& params, const std::string& compare_guid, const Ice::Current&)
+void ServiceManagementImpl::addLocatorParams(const ServiceLocatorParamsPtr& params, const std::string& compare_guid, const Ice::Current&)
{
- ServiceDiscoveryParamsSpec spec(params, compare_guid, _management);
+ ServiceLocatorParamsSpec spec(params, compare_guid, _management);
supported_discovery_params.push_back(spec);
}
@@ -65,14 +65,14 @@ void ServiceManagementImpl::suspend(const Ice::Current&)
{
suspended = true;
- _service_discovery_topic->ServiceSuspended(_guid);
+ _service_discovery_topic->serviceSuspended(_guid);
}
void ServiceManagementImpl::unsuspend(const Ice::Current&)
{
suspended = false;
- _service_discovery_topic->ServiceUnsuspended(_guid);
+ _service_discovery_topic->serviceUnsuspended(_guid);
}
void ServiceManagementImpl::unregister(const Ice::Current&)
@@ -81,7 +81,7 @@ void ServiceManagementImpl::unregister(const Ice::Current&)
_management->removeService(this);
- _service_discovery_topic->ServiceUnregistered(_guid);
+ _service_discovery_topic->serviceUnregistered(_guid);
}
diff --git a/src/ServiceManagement.h b/src/ServiceManagement.h
index e8f41e4..98738b6 100644
--- a/src/ServiceManagement.h
+++ b/src/ServiceManagement.h
@@ -1,32 +1,32 @@
-class ServiceDiscoveryParamsSpec {
+class ServiceLocatorParamsSpec {
public:
-ServiceDiscoveryParamsSpec(const ServiceDiscoveryParamsPtr& params, const std::string& compare_guid, ServiceDiscoveryManagementImpl* management)
+ServiceLocatorParamsSpec(const ServiceLocatorParamsPtr& params, const std::string& compare_guid, ServiceLocatorManagementImpl* management)
: _params(params), _compare_guid(compare_guid), _management(management) { };
- bool isSupported(const ServiceDiscoveryParamsPtr&);
+ bool isSupported(const ServiceLocatorParamsPtr&);
private:
- ServiceDiscoveryParamsPtr _params;
+ ServiceLocatorParamsPtr _params;
std::string _compare_guid;
- ServiceDiscoveryManagementImpl* _management;
+ ServiceLocatorManagementImpl* _management;
};
class ServiceManagementImpl : public ServiceManagement
{
public:
- ServiceManagementImpl(ServiceDiscoveryManagementImpl*, Ice::ObjectPrx, Ice::ObjectAdapterPtr, EventsPrx, const std::string&);
- void addDiscoveryParams(const ServiceDiscoveryParamsPtr&, const std::string&, const Ice::Current&);
+ ServiceManagementImpl(ServiceLocatorManagementImpl*, Ice::ObjectPrx, Ice::ObjectAdapterPtr, EventsPrx, const std::string&);
+ void addLocatorParams(const ServiceLocatorParamsPtr&, const std::string&, const Ice::Current&);
void suspend(const Ice::Current&);
void unsuspend(const Ice::Current&);
void unregister(const Ice::Current&);
Ice::ObjectPrx GetService(void) { return _service; };
ServiceManagementPrx GetServiceManagementPrx(void) { return managementprx; };
- bool isSupported(const ServiceDiscoveryParamsPtr&);
+ bool isSupported(const ServiceLocatorParamsPtr&);
private:
bool suspended;
- ServiceDiscoveryManagementImpl* _management;
+ ServiceLocatorManagementImpl* _management;
Ice::ObjectPrx _service;
Ice::ObjectAdapterPtr _adapter;
ServiceManagementPrx managementprx;
- std::vector<ServiceDiscoveryParamsSpec> supported_discovery_params;
+ std::vector<ServiceLocatorParamsSpec> supported_discovery_params;
EventsPrx _service_discovery_topic;
std::string _guid;
};
commit 175b4a001ae4f5b17ee1f1f6951468589ab99759
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:33:55 2010 -0300
Update to new names of slice files.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d9092e8..186c7d0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,7 +1,7 @@
# Create the actual standalone service locator component
hydra_component_init(service_locator CXX)
-hydra_component_add_slice(service_locator service_discovery)
-hydra_component_add_slice(service_locator service_discovery_events)
+hydra_component_add_slice(service_locator service_locator)
+hydra_component_add_slice(service_locator service_locator_events)
hydra_component_add_file(service_locator ServiceLocator.cpp)
hydra_component_add_file(service_locator ServiceDiscoveryManagement.cpp)
hydra_component_add_file(service_locator ServiceManagement.cpp)
commit 99fd8a341c521102c5dfdc15009efed811999fa2
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:33:16 2010 -0300
Whoops, some stuff that was missed.
diff --git a/slice/service_locator.ice b/slice/service_locator.ice
index 1fa478d..70c9a1d 100644
--- a/slice/service_locator.ice
+++ b/slice/service_locator.ice
@@ -78,7 +78,7 @@ module Location
* comparison to determine whether supplied parameters in a locator request
* are truly supported or not. This is optional.
*/
- void addDiscoveryParams(ServiceDiscoveryParams params, string compareguid);
+ void addDiscoveryParams(ServiceLocatorParams params, string compareguid);
/**
* Method which suspends this service from being considered when a locator request
@@ -112,7 +112,7 @@ module Location
* @return A boolean value with true meaning the parameters are supported and false if not.
*
*/
- bool isSupported(ServiceDiscoveryParams params);
+ bool isSupported(ServiceLocatorParams params);
};
/**
commit 7f9f1f52b50b0ae85f78f2d4595237cafc609524
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:32:50 2010 -0300
Update build system with new filenames.
diff --git a/slice/CMakeLists.txt b/slice/CMakeLists.txt
index 4eddc05..c0ecd31 100644
--- a/slice/CMakeLists.txt
+++ b/slice/CMakeLists.txt
@@ -1,5 +1,5 @@
-# Compile our service discovery slice definition so we can then use it
-hydra_compile_slice(service_discovery.ice lib "Slice Defined API" Core)
+# Compile our service locator slice definition so we can then use it
+hydra_compile_slice(service_locator.ice lib "Slice Defined API" Core)
# Can't forget about events
-hydra_compile_slice(service_discovery_events.ice lib "Slice Defined API" Core)
+hydra_compile_slice(service_locator_events.ice lib "Slice Defined API" Core)
commit e834a1333fe56e24f609676d5f908d498aa0a83c
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:31:10 2010 -0300
Change the name and bring it into conformance with style guidelines.
diff --git a/slice/service_locator_events.ice b/slice/service_locator_events.ice
new file mode 100644
index 0000000..a42a2c1
--- /dev/null
+++ b/slice/service_locator_events.ice
@@ -0,0 +1,62 @@
+module Hydra
+{
+
+module Location
+{
+
+ /**
+ * Default topic used for service locator events.
+ */
+ const string TOPIC="::hydra::service::locator";
+
+ /**
+ * Interface used to publish service locator related events.
+ */
+ interface Events
+ {
+ /**
+ * Method which is called when a comparator is registered.
+ *
+ * @param guid The unique identifier of the comparator.
+ */
+ void comparisonRegistered(string guid);
+
+ /**
+ * Method which is called when a comparator is unregistered.
+ *
+ * @param guid The unique identifier of the comparator.
+ */
+ void comparisonUnregistered(string guid);
+
+ /**
+ * Method which is called when a service is registered.
+ *
+ * @param guid The unique identifier of the service.
+ */
+ void serviceRegistered(string guid);
+
+ /**
+ * Method which is called when a service is unregistered.
+ *
+ * @param guid The unique identifier of the service.
+ */
+ void serviceUnregistered(string guid);
+
+ /**
+ * Method which is called when a service is suspended.
+ *
+ * @param guid The unique identifier of the service.
+ */
+ void serviceSuspended(string guid);
+
+ /**
+ * Method which is called when a service is unsuspended.
+ *
+ * @param guid The unique identifier of the service.
+ */
+ void serviceUnsuspended(string guid);
+ };
+
+}; // end module Location
+
+}; // end module Hydra
commit d2ede4bf3db033f2fee0532837d5c7d1c902156c
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:28:01 2010 -0300
One more tweak based on style guidelines.
diff --git a/slice/service_locator.ice b/slice/service_locator.ice
index 6c5badb..1fa478d 100644
--- a/slice/service_locator.ice
+++ b/slice/service_locator.ice
@@ -1,8 +1,10 @@
#include <Ice/BuiltinSequences.ice>
-module Hydra {
+module Hydra
+{
-module Location {
+module Location
+{
/**
* Exception used for service locator requests to indicate that no service could be found.
commit 9e205497b5d73a48ffedbe4dc1c6b8e53fa5ca57
Author: Joshua Colp <jcolp at digium.com>
Date: Sat Jul 31 13:25:49 2010 -0300
Begin eradication of 'service discovery' in favor of 'service locator' and update the file
based on newly formed style guidelines.
diff --git a/slice/service_locator.ice b/slice/service_locator.ice
new file mode 100644
index 0000000..6c5badb
--- /dev/null
+++ b/slice/service_locator.ice
@@ -0,0 +1,151 @@
+#include <Ice/BuiltinSequences.ice>
+
+module Hydra {
+
+module Location {
+
+ /**
+ * Exception used for service locator requests to indicate that no service could be found.
+ */
+ exception ServiceNotFound
+ {
+ };
+
+ /**
+ * Exception used for indicating that a comparator is already registered with a given guid.
+ */
+ exception DuplicateCompare
+ {
+ };
+
+ /**
+ * Exception used for indicating that a comparator was not found.
+ */
+ exception CompareNotFound
+ {
+ };
+
+ /**
+ * Generic service locator parameters class that more specific parameter classes can extend.
+ */
+ class ServiceLocatorParams
+ {
+ /**
+ * Basic category for the service, such as bridge or channel service.
+ */
+ string category;
+ };
+
+ /**
+ * Interface used to perform service locator requests.
+ */
+ interface ServiceLocator
+ {
+ /**
+ * Method which performs a locator request using provided parameters but only returns a single
+ * proxy.
+ *
+ * @param params A concrete class containing parameters describing the service that is trying to be found.
+ *
+ * @return A proxy to the service matching the given parameters.
+ */
+ idempotent Object *locate(ServiceLocatorParams params) throws ServiceNotFound;
+
+ /**
+ * Method which performs a location request using provided parameters but can return multiple
+ * proxies.
+ *
+ * @param params A concrete class containing parameters describing the service that is trying to be found.
+ *
+ * @return A sequence of proxies which match the given parameters.
+ */
+ idempotent Ice::ObjectProxySeq locateAll(ServiceLocatorParams params) throws ServiceNotFound;
+ };
+
+ /**
+ * Interface to the service locator component which allows manipulation of registered service.
+ */
+ interface ServiceManagement
+ {
+ /**
+ * Method which adds supported discovery parameters to a registered service.
+ *
+ * @param params A concrete class containing parameters describing what is supported.
+ *
+ * @param compareguid The unique identifier of a comparator which can perform a lower level
+ * comparison to determine whether supplied parameters in a locator request
+ * are truly supported or not. This is optional.
+ */
+ void addDiscoveryParams(ServiceDiscoveryParams params, string compareguid);
+
+ /**
+ * Method which suspends this service from being considered when a locator request
+ * is performed.
+ */
+ void suspend();
+
+ /**
+ * Method which unsuspends this service. Once this method is called the service will
+ * be able to found again when a locator request is performed.
+ */
+ void unsuspend();
+
+ /**
+ * Method which unregisters this service from the service locator.
+ */
+ void unregister();
+ };
+
+ /**
+ * Interface to an external component which performs a service locator parameters comparison.
+ */
+ interface ServiceLocatorParamsCompare
+ {
+ /**
+ * Method which determines whether provided parameters are supported by the
+ * comparator or not.
+ *
+ * @param params A concrete class containing parameters describing the service that is trying to be found.
+ *
+ * @return A boolean value with true meaning the parameters are supported and false if not.
+ *
+ */
+ bool isSupported(ServiceDiscoveryParams params);
+ };
+
+ /**
+ * Interface to do service locator management, such as adding services and comparators.
+ */
+ interface ServiceLocatorManagement
+ {
+ /**
+ * Method which adds a service to the service locator.
+ *
+ * @param service A proxy to the service that is being registered.
+ *
+ * @param guid A unique identifier for the service which is used in events.
+ *
+ * @return A proxy to the service management interface for this service.
+ */
+ ServiceManagement *addService(Object *service, string guid);
+
+ /**
+ * Method which adds a comparator to the service locator.
+ *
+ * @param compareguid A unique identifier for this comparator.
+ *
+ * @param compare A proxy to the comparator service.
+ */
+ void addCompare(string compareguid, ServiceLocatorParamsCompare *compare) throws DuplicateCompare;
+
+ /**
+ * Method which removes a comparator from the service locator.
+ *
+ * @param compareguid The unique identifier for the comparator to remove.
+ */
+ void removeCompare(string compareguid) throws CompareNotFound;
+ };
+
+}; // end module Location
+
+}; // end module Hydra
-----------------------------------------------------------------------
--
hydra/servicediscovery.git
More information about the asterisk-scf-commits
mailing list