[hydra-commits] hydra/slice.git branch "master" updated.
Commits to the Hydra project code repositories
hydra-commits at lists.digium.com
Fri Aug 6 13:41:11 CDT 2010
branch "master" has been updated
via 2e3c6d0f4dd971faa13dbfbe8a0d905e4016500d (commit)
via 7057f74ac2e6837bf683ac55600d825388746aaf (commit)
from 5caa209193d349a49ebb6035201e093b68eba945 (commit)
Summary of changes:
Core/Bridging/BridgeServiceIf.ice | 93 +++++++++++++++++++++++++++++++++++
Core/Bridging/CMakeLists.txt | 2 +
Core/CMakeLists.txt | 8 +++-
Core/Channel/CMakeLists.txt | 2 +
Core/Channel/ChannelServiceIf.ice | 78 +++++++++++++++++++++++++++++
Core/{Service.ice => ServiceIf.ice} | 0
6 files changed, 182 insertions(+), 1 deletions(-)
create mode 100644 Core/Bridging/BridgeServiceIf.ice
create mode 100644 Core/Bridging/CMakeLists.txt
create mode 100644 Core/Channel/CMakeLists.txt
create mode 100644 Core/Channel/ChannelServiceIf.ice
rename Core/{Service.ice => ServiceIf.ice} (100%)
- Log -----------------------------------------------------------------
commit 2e3c6d0f4dd971faa13dbfbe8a0d905e4016500d
Merge: 7057f74 5caa209
Author: Brent Eagles <beagles at digium.com>
Date: Fri Aug 6 16:09:28 2010 -0230
Merge branch 'master' of ssh://git.asterisk.org/hydra/slice
diff --cc Core/CMakeLists.txt
index 8733d8d,1241d12..10def36
--- a/Core/CMakeLists.txt
+++ b/Core/CMakeLists.txt
@@@ -1,10 -1,7 +1,7 @@@
- # Compile our service locator slice definition so we can then use it
- hydra_compile_slice(ServiceLocatorI.ice lib "Slice Defined API" Core)
-
- # Can't forget about events
- hydra_compile_slice(ServiceLocatorEventsI.ice lib "Slice Defined API" Core)
+ # Slice definitions for Discovery functionality
+ add_subdirectory(Discovery)
-hydra_compile_slice(Service.ice lib "Slice Defined API" Core)
+hydra_compile_slice(ServiceIf.ice lib "Slice Defined API" Core)
# Slice definitions for Endpoint functionality
add_subdirectory(Endpoint)
commit 7057f74ac2e6837bf683ac55600d825388746aaf
Author: Brent Eagles <beagles at digium.com>
Date: Fri Aug 6 16:08:39 2010 -0230
Initial adding of slice files for Channel and Bridging. Also changed the name of the Service interface
diff --git a/Core/Bridging/BridgeServiceIf.ice b/Core/Bridging/BridgeServiceIf.ice
new file mode 100644
index 0000000..7cbdc55
--- /dev/null
+++ b/Core/Bridging/BridgeServiceIf.ice
@@ -0,0 +1,93 @@
+#ifndef __HYDRA_BRIDGING_SERVICE_ICE
+#define __HYDRA_BRIDGING_SERVICE_ICE
+
+#include <Core/Service.ice>
+#include <Core/Channel/ChannelService.ice>
+
+module Hydra
+{
+module Core
+{
+module Bridging
+{
+["suppress"]
+module V1
+{
+ const string Version = "V1";
+
+ /**
+ * UnknownEndpoint indicates that an operation that depended on locating
+ * a specific ep has failed to find it.
+ */
+ exception UnknownEndpoint
+ {
+ Endpoint::V1::EndpointId ep;
+ };
+
+ /**
+ * EndpointAlreadyRegistered indicates that an attempt to register an ep
+ * has failed because it was registered already.
+ */
+ exception EndpointAlreadyRegistered
+ {
+ Endpoint::V1::EndpointId ep;
+ };
+
+
+ /**
+ * CallManager objects respond to activities on a bridge.
+ *
+ * Note: Currently CallManager objects simply implement the Channel's signalling
+ * callback methods. It might be more appropriate in the future to parallel these
+ * methods, but allow for additional information to be passed as arguments.
+ */
+ interface CallManager extends Channel::V1::SignalCallback
+ {
+ };
+
+ /**
+ * A Bridge manages the assocation between multiple eps participating in
+ * a call.
+ */
+ interface Bridge
+ {
+ void addEndpoint(Channel::V1::SessionEndpoint ep);
+ void removeEndpoint(Endpoint::V1::EndpointId id);
+ Channel::V1::SessionEndpointSeq listEndpoints();
+ };
+
+ interface BridgeEvents
+ {
+ void epAdded(Channel::V1::SessionEndpoint ep);
+ void epRemoved(Channel::V1::SessionEndpoint ep);
+ void shuttingDown();
+ void stopped();
+ };
+
+ interface BridgeHook
+ {
+ bool onAddEndpoint(Channel::V1::SessionEndpoint ep);
+ bool onRemoveEndpoint(Channel::V1::SessionEndpoint ep);
+ bool onListEndpoints(Channel::V1::SessionEndpointSeq input, out Channel::V1::SessionEndpointSeq output);
+ bool onShutdown();
+ bool onShutdownComplete();
+ bool onDestroy();
+ };
+
+ interface BridgeFactoryHook
+ {
+ bool onCreateBridge(Channel::V1::SessionEndpoint adminEndpoint, Channel::V1::SessionEndpointSeq eps);
+ bool onShutdown();
+ bool onShutdownCompleted();
+ };
+
+ interface BridgeFactory extends V1::Service
+ {
+ Bridge* createBridge(Channel::V1::SessionEndpoint adminEndpoint, Channel::V1::SessionEndpointSeq eps,
+ CallManager* manager);
+ };
+};
+};
+};
+};
+#endif
diff --git a/Core/Bridging/CMakeLists.txt b/Core/Bridging/CMakeLists.txt
new file mode 100644
index 0000000..055cdb4
--- /dev/null
+++ b/Core/Bridging/CMakeLists.txt
@@ -0,0 +1,2 @@
+# Compile Bridging API
+hydra_compile_slice(BridgeServiceIf.ice lib "BridgeService API" Core)
diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt
index c7d360c..8733d8d 100644
--- a/Core/CMakeLists.txt
+++ b/Core/CMakeLists.txt
@@ -4,10 +4,16 @@ hydra_compile_slice(ServiceLocatorI.ice lib "Slice Defined API" Core)
# Can't forget about events
hydra_compile_slice(ServiceLocatorEventsI.ice lib "Slice Defined API" Core)
-hydra_compile_slice(Service.ice lib "Slice Defined API" Core)
+hydra_compile_slice(ServiceIf.ice lib "Slice Defined API" Core)
# Slice definitions for Endpoint functionality
add_subdirectory(Endpoint)
# Slice definitions for Routing functionality
add_subdirectory(Routing)
+
+# Slice definitions for Channels
+add_subdirectory(Channel)
+
+# Slice definitions for Bridging components
+add_subdirectory(Bridging)
diff --git a/Core/Channel/CMakeLists.txt b/Core/Channel/CMakeLists.txt
new file mode 100644
index 0000000..f45f939
--- /dev/null
+++ b/Core/Channel/CMakeLists.txt
@@ -0,0 +1,2 @@
+# Compile Channel API
+hydra_compile_slice(ChannelServiceIf.ice lib "ChannelService API" Core)
diff --git a/Core/Channel/ChannelServiceIf.ice b/Core/Channel/ChannelServiceIf.ice
new file mode 100644
index 0000000..74c3a36
--- /dev/null
+++ b/Core/Channel/ChannelServiceIf.ice
@@ -0,0 +1,78 @@
+#pragma once
+
+#include <Core/Endpoint/EndpointI.ice>
+#include <Core/Service.ice>
+#include <Media/MediaI.ice>
+
+module Hydra
+{
+module Core
+{
+module Channel
+{
+["suppress"]
+module V1
+{
+ const string Version = "V1";
+
+ ["preserve"]
+ class SessionInfo
+ {
+ Endpoint::V1::EndpointId caller;
+ Endpoint::V1::EndpointId destination;
+ string currentState;
+ string role;
+ long startTime;
+ long connectedTime;
+ };
+
+ sequence<SessionInfo> SessionInfoSeq;
+
+ class ResponseCode
+ {
+ int isdnCode;
+ };
+
+ interface SignalCallback
+ {
+ void ring(Endpoint::V1::EndpointId ep);
+ void connected(Endpoint::V1::EndpointId ep);
+ void terminated(Endpoint::V1::EndpointId ep, ResponseCode response);
+ void busy(Endpoint::V1::EndpointId ep);
+ void congestion(Endpoint::V1::EndpointId ep, ResponseCode response);
+ void hold(Endpoint::V1::EndpointId ep);
+ void unhold(Endpoint::V1::EndpointId ep);
+ void flash(Endpoint::V1::EndpointId ep);
+ void progress(Endpoint::V1::EndpointId ep, ResponseCode response);
+ };
+
+ interface SignalCommands
+ {
+ bool call(Endpoint::V1::EndpointId caller, Endpoint::V1::EndpointId destination, SignalCallback callback);
+ void terminate(Endpoint::V1::EndpointId caller);
+ };
+
+ class SessionEndpoint extends Endpoint::V1::BaseEndpoint
+ {
+ SignalCommands* command;
+ SignalCallback* callback;
+ Media::V1::Session* mediaSession;
+ };
+
+ /**
+ * A ChannelService is a session-oriented ep manager.
+ *
+ */
+ interface ChannelService extends V1::Service
+ {
+ SessionInfoSeq listCurrentSessions();
+ SessionEndpoint getEndpoint(Endpoint::V1::EndpointId id);
+ };
+
+ sequence<SessionEndpoint> SessionEndpointSeq;
+
+}; // End of V1
+}; // End of Channel
+}; // End of Core
+}; // End of Hydra
+
diff --git a/Core/Service.ice b/Core/ServiceIf.ice
similarity index 100%
rename from Core/Service.ice
rename to Core/ServiceIf.ice
-----------------------------------------------------------------------
--
hydra/slice.git
More information about the asterisk-scf-commits
mailing list