[asterisk-scf-commits] asterisk-scf/integration/slice.git branch "master" updated.
Commits to the Asterisk SCF project code repositories
asterisk-scf-commits at lists.digium.com
Tue Sep 7 15:02:45 CDT 2010
branch "master" has been updated
via fa01fcd93a618d405375cfda50199ff7eb2f22ae (commit)
via 05998d45b8932033297ccce5f4c15db08a602b22 (commit)
from c58a091c353346d1bd9cf14aabe7342c5d6aa1e9 (commit)
Summary of changes:
Core/Discovery/ServiceLocatorEventsIf.ice | 4 +-
Core/Discovery/ServiceLocatorIf.ice | 4 +-
Core/Endpoint/EndpointIf.ice | 4 +-
Core/Routing/RoutingI.ice | 4 +-
Core/Routing/RoutingIf.ice | 4 +-
Media/MediaIf.ice | 6 +-
Media/RTP/MediaRTPIf.ice | 18 +-
SessionCommunications/Bridging/BridgingIf.ice | 111 +++++++++-
SessionCommunications/SessionCommunicationsIf.ice | 261 ++++++++++++++++++++-
System/Component/ComponentServiceIf.ice | 6 +-
System/Time/TimeIf.ice | 4 +-
11 files changed, 392 insertions(+), 34 deletions(-)
- Log -----------------------------------------------------------------
commit fa01fcd93a618d405375cfda50199ff7eb2f22ae
Author: Brent Eagles <beagles at digium.com>
Date: Tue Sep 7 17:29:03 2010 -0230
Changing root namespace from AsteriskSCF to AsteriskScf.
diff --git a/Core/Discovery/ServiceLocatorEventsIf.ice b/Core/Discovery/ServiceLocatorEventsIf.ice
index a1e3fe8..0869aac 100644
--- a/Core/Discovery/ServiceLocatorEventsIf.ice
+++ b/Core/Discovery/ServiceLocatorEventsIf.ice
@@ -8,7 +8,7 @@
#pragma once
-module AsteriskSCF
+module AsteriskScf
{
module System
@@ -74,4 +74,4 @@ module Discovery
}; // end module System
-}; // end module AsteriskSCF
+}; // end module AsteriskScf
diff --git a/Core/Discovery/ServiceLocatorIf.ice b/Core/Discovery/ServiceLocatorIf.ice
index fb44c35..a205d78 100644
--- a/Core/Discovery/ServiceLocatorIf.ice
+++ b/Core/Discovery/ServiceLocatorIf.ice
@@ -10,7 +10,7 @@
#include <Ice/BuiltinSequences.ice>
-module AsteriskSCF
+module AsteriskScf
{
module Core
@@ -169,4 +169,4 @@ module V1
}; // end module Core
-}; // end module AsteriskSCF
+}; // end module AsteriskScf
diff --git a/Core/Endpoint/EndpointIf.ice b/Core/Endpoint/EndpointIf.ice
index de4830c..2169fa6 100644
--- a/Core/Endpoint/EndpointIf.ice
+++ b/Core/Endpoint/EndpointIf.ice
@@ -10,7 +10,7 @@
#include <Ice/BuiltinSequences.ice>
-module AsteriskSCF
+module AsteriskScf
{
module Core
{
@@ -42,5 +42,5 @@ module V1
}; // module V1
}; // module Endpoint
}; // module Core
-}; // module AsteriskSCF
+}; // module AsteriskScf
diff --git a/Core/Routing/RoutingI.ice b/Core/Routing/RoutingI.ice
index 594185b..1ba06d1 100644
--- a/Core/Routing/RoutingI.ice
+++ b/Core/Routing/RoutingI.ice
@@ -10,7 +10,7 @@
#include "Core/Endpoint/EndpointI.ice"
-module AsteriskSCF
+module AsteriskScf
{
module Core
{
@@ -157,5 +157,5 @@ module V1
}; // module V1
}; // module Routing
}; // module Core
-}; // module AsteriskSCF
+}; // module AsteriskScf
diff --git a/Core/Routing/RoutingIf.ice b/Core/Routing/RoutingIf.ice
index 901383f..28ae3fa 100644
--- a/Core/Routing/RoutingIf.ice
+++ b/Core/Routing/RoutingIf.ice
@@ -10,7 +10,7 @@
#include <Core/Endpoint/EndpointIf.ice>
-module AsteriskSCF
+module AsteriskScf
{
module Core
{
@@ -171,5 +171,5 @@ module V1
}; // module V1
}; // module Routing
}; // module Core
-}; // module AsteriskSCF
+}; // module AsteriskScf
diff --git a/Media/MediaIf.ice b/Media/MediaIf.ice
index 29a50c4..1bf8b53 100644
--- a/Media/MediaIf.ice
+++ b/Media/MediaIf.ice
@@ -11,7 +11,7 @@
#include <Ice/BuiltinSequences.ice>
#include "Core/Discovery/ServiceLocatorIf.ice"
-module AsteriskSCF
+module AsteriskScf
{
module Media
@@ -203,7 +203,7 @@ module V1
* A generic format discovery class that can be extended for adding parameters. The parameters are used to find
* a component capable of interpreting and providing a concrete class for a format.
*/
- class FormatDiscovery extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
+ class FormatDiscovery extends AsteriskScf::Core::Discovery::V1::ServiceLocatorParams
{
};
@@ -489,4 +489,4 @@ module V1
}; // end module Media
-}; // end module AsteriskSCF
+}; // end module AsteriskScf
diff --git a/Media/RTP/MediaRTPIf.ice b/Media/RTP/MediaRTPIf.ice
index 5b3d694..e9e4a83 100644
--- a/Media/RTP/MediaRTPIf.ice
+++ b/Media/RTP/MediaRTPIf.ice
@@ -9,7 +9,7 @@
#include "Core/Discovery/ServiceLocatorIf.ice"
#include "Media/MediaIf.ice"
-module AsteriskSCF
+module AsteriskScf
{
module Media
@@ -24,18 +24,18 @@ module V1
/**
* Extended discovery class for RTP media services.
*/
- class RTPServiceLocatorParams extends AsteriskSCF::Core::Discovery::V1::ServiceLocatorParams
+ class RTPServiceLocatorParams extends AsteriskScf::Core::Discovery::V1::ServiceLocatorParams
{
/**
* A sequence of formats that the RTP media service is expected to transport.
*/
- AsteriskSCF::Media::V1::FormatSeq formats;
+ AsteriskScf::Media::V1::FormatSeq formats;
};
/**
* Interface to an RTP stream source.
*/
- interface StreamSourceRTP extends AsteriskSCF::Media::V1::StreamSource
+ interface StreamSourceRTP extends AsteriskScf::Media::V1::StreamSource
{
/**
* Method which retrieves the local listening IP address of this source.
@@ -55,7 +55,7 @@ module V1
/**
* Interface to an RTP stream sink.
*/
- interface StreamSinkRTP extends AsteriskSCF::Media::V1::StreamSink
+ interface StreamSinkRTP extends AsteriskScf::Media::V1::StreamSink
{
/**
* Method which changes the IP address and port that media will be sent to.
@@ -91,12 +91,12 @@ module V1
/**
* A dictionary mapping payloads to media formats.
*/
- dictionary<int, AsteriskSCF::Media::V1::Format> PayloadMap;
+ dictionary<int, AsteriskScf::Media::V1::Format> PayloadMap;
/**
* Interface to an RTP media session.
*/
- interface RTPSession extends AsteriskSCF::Media::V1::Session
+ interface RTPSession extends AsteriskScf::Media::V1::Session
{
/**
* Method which associates payloads and media formats.
@@ -137,7 +137,7 @@ module V1
*
* @return RTPSession* A proxy to the new RTP session.
*/
- RTPSession* allocate(AsteriskSCF::Media::V1::FormatSeq formats);
+ RTPSession* allocate(AsteriskScf::Media::V1::FormatSeq formats);
};
}; // end module V1
@@ -146,4 +146,4 @@ module V1
}; // end module Media
-}; // end module AsteriskSCF
+}; // end module AsteriskScf
diff --git a/SessionCommunications/Bridging/BridgingIf.ice b/SessionCommunications/Bridging/BridgingIf.ice
index 756e707..bdbf5fe 100644
--- a/SessionCommunications/Bridging/BridgingIf.ice
+++ b/SessionCommunications/Bridging/BridgingIf.ice
@@ -12,7 +12,7 @@
#include <System/Component/ComponentServiceIf.ice>
#include <SessionCommunications/SessionCommunicationsIf.ice>
-module AsteriskSCF
+module AsteriskScf
{
module SessionCommunications
{
diff --git a/SessionCommunications/SessionCommunicationsIf.ice b/SessionCommunications/SessionCommunicationsIf.ice
index 0117f77..fd337e1 100644
--- a/SessionCommunications/SessionCommunicationsIf.ice
+++ b/SessionCommunications/SessionCommunicationsIf.ice
@@ -13,7 +13,7 @@
#include <System/Time/TimeIf.ice>
#include <Media/MediaIf.ice>
-module AsteriskSCF
+module AsteriskScf
{
module SessionCommunications
{
@@ -86,7 +86,7 @@ module V1
/**
* When the session was initiated.
*/
- AsteriskSCF::System::Time::V1::TimeMarker startTime;
+ AsteriskScf::System::Time::V1::TimeMarker startTime;
};
/**
@@ -225,10 +225,10 @@ module V1
* A media session object may not be available at the time this is called.
* For example, in SIP before media details are known.
*
- * @return An AsteriskSCF media session for the current session. May be a
+ * @return An AsteriskScf media session for the current session. May be a
* nil reference if the media part of the session has not been initialized.
*/
- AsteriskSCF::Media::V1::Session* getMediaSession();
+ AsteriskScf::Media::V1::Session* getMediaSession();
/**
* Sends a hold notification to the peer.
@@ -308,7 +308,7 @@ module V1
* Instances of SessionEndpoint implement a mechanism for creating Session
* objects that can communicate with peer entities (external or otherwise).
*/
- interface SessionEndpoint extends AsteriskSCF::Core::Endpoint::V1::BaseEndpoint
+ interface SessionEndpoint extends AsteriskScf::Core::Endpoint::V1::BaseEndpoint
{
/**
* Creates a session for the specified destination, optionally registering
@@ -335,5 +335,5 @@ module V1
}; // End of module V1
}; // End of module SessionCommunications
-}; // End of module AsteriskSCF
+}; // End of module AsteriskScf
diff --git a/System/Component/ComponentServiceIf.ice b/System/Component/ComponentServiceIf.ice
index c7b7f56..4df4e45 100644
--- a/System/Component/ComponentServiceIf.ice
+++ b/System/Component/ComponentServiceIf.ice
@@ -7,7 +7,7 @@
*/
#pragma once
-module AsteriskSCF
+module AsteriskScf
{
module System
{
@@ -30,7 +30,7 @@ module V1
exception Suspended {};
/**
- * Service is the base interface for all AsteriskSCF services. Most components will include an implementation
+ * Service is the base interface for all AsteriskScf services. Most components will include an implementation
* of this or a derived interface.
*/
interface ComponentService
@@ -67,5 +67,5 @@ module V1
}; // End of module V1
}; // End of module Component
}; // End of module System
-}; // End of module AsteriskSCF
+}; // End of module AsteriskScf
diff --git a/System/Time/TimeIf.ice b/System/Time/TimeIf.ice
index 59dd50c..6b57857 100644
--- a/System/Time/TimeIf.ice
+++ b/System/Time/TimeIf.ice
@@ -8,7 +8,7 @@
#pragma once
-module AsteriskSCF
+module AsteriskScf
{
module System
{
@@ -24,4 +24,4 @@ module V1
}; // End of V1
}; // End of Time
}; // End of System
-}; // End of AsteriskSCF
+}; // End of AsteriskScf
commit 05998d45b8932033297ccce5f4c15db08a602b22
Author: Brent Eagles <beagles at digium.com>
Date: Tue Sep 7 17:27:29 2010 -0230
Add some doc comments.
diff --git a/SessionCommunications/Bridging/BridgingIf.ice b/SessionCommunications/Bridging/BridgingIf.ice
index 682e1b4..756e707 100644
--- a/SessionCommunications/Bridging/BridgingIf.ice
+++ b/SessionCommunications/Bridging/BridgingIf.ice
@@ -21,32 +21,141 @@ module Bridging
["suppress"]
module V1
{
+ //
+ // TODO Exceptions?
+ //
const string Version = "V1";
+ interface BridgeListener;
+
+ /**
+ * Bridge object manages the association of multiple sessions in the process
+ * of communicating with each other.
+ */
interface Bridge
{
+ /**
+ * Add a sequence of session proxies to the bridge. Sessions are started
+ * if necessary.
+ *
+ * @param session A sequence of session proxies.
+ *
+ * @see Session
+ *
+ */
void addSessions(V1::SessionSeq session);
+
+ /**
+ * Abruptly destroy the bridge. Sessions will not be stopped.
+ */
void destroy();
+
+ /**
+ * List the sessions currently on the bridge.
+ *
+ * @return a sequence of session proxies participating in the bridge.
+ *
+ */
V1::SessionSeq listSessions();
+
+ /**
+ * Removes one or more sessions from the bridge. Sessions are not stopped
+ * as they are removed.
+ *
+ * @param sessions A sequence of session proxies.
+ */
void removeSessions(V1::SessionSeq sessions);
+
+ /**
+ * Nicely shutdown the bridge. Participating sessions are disconnected.
+ */
void shutdown();
+
+ /**
+ * Adds a listener object to the bridge. The listener will receive notification
+ * of future changes to the bridge as they occur.
+ *
+ * @param listener A reference to a BridgeListener object.
+ *
+ * @see BridgeListener
+ */
+ void addListener(BridgeListener* listener);
+
+ /**
+ * Removes a listener object from the bridge. The listen will cease receiving
+ * notifications of changes to the bridge.
+ *
+ * @param listener A reference to the listener object to be removed.
+ *
+ * @see BridgeListener
+ *
+ */
+ void removeListener(BridgeListener* listener);
};
+ /**
+ * Instances of BridgeListener are used for monitoring changes in one or
+ * more bridges. Bridge objects have an addListener method that allows
+ * BridgeListeners objects to be registered with the bridge. The Bridge
+ * object then calls the BridgeListener methods to notify listeners of
+ * changes as they occur.
+ */
interface BridgeListener
{
+ /**
+ * Called when sessions have been added to a bridge.
+ *
+ * @param sessionBridge The bridge object the sessions were added to.
+ *
+ * @param sessions A sequence of session proxies that were added to the bridge.
+ *
+ */
void sessionsAdded(Bridge* sessionBridge, V1::SessionSeq sessions);
+
+ /**
+ * Called when sessions have been removed from a bridge.
+ *
+ * @param sessionBridge The bridge object the sessions were removed from.
+ *
+ * @param sessions A sequence of session proxies that were removed from
+ * the bridge.
+ *
+ */
void sessionsRemoved(Bridge* sessionBridge, V1::SessionSeq sessions);
+
+ /**
+ * Called when a bridge has completed shutdown/destruction.
+ *
+ * @param sessionBridge The bridge that was stopped.
+ *
+ */
void stopped(Bridge* sessionBridge);
+
+ /**
+ * Called when a bridge has started shutdown/destruction operations.
+ *
+ * @param sessionBrdige The bridge that is stopping.
+ *
+ */
void stopping(Bridge* sessionBridge);
};
interface BridgeManagerListener;
+ sequence<Bridge*> BridgeSeq;
+
+ /**
+ * Instances of BridgeManager allow for the creation and management of bridges.
+ */
interface BridgeManager
{
+
+
void addListener(BridgeManagerListener* listener);
Bridge* createBridge(V1::SessionSeq sessions, BridgeListener* listener);
void removeListener(BridgeManagerListener* listener);
+ BridgeSeq listBridges();
+ void shutdown();
};
interface BridgeManagerListener
diff --git a/SessionCommunications/SessionCommunicationsIf.ice b/SessionCommunications/SessionCommunicationsIf.ice
index 28f144d..0117f77 100644
--- a/SessionCommunications/SessionCommunicationsIf.ice
+++ b/SessionCommunications/SessionCommunicationsIf.ice
@@ -20,6 +20,10 @@ module SessionCommunications
["suppress"]
module V1
{
+ //
+ // TODO: Exceptions?
+ //
+
const string Version = "V1";
/*
@@ -28,59 +32,304 @@ module V1
interface Session;
interface SessionEndpoint;
+ /**
+ * Basic response code value encapsulation.
+ */
class ResponseCode
{
+ /**
+ * ISDN cause code @see http://tools.ietf.org/html/rfc3398
+ */
int isdnCode;
};
+ /**
+ * SessionInfo contains the details of a given session
+ * at a specific time.
+ *
+ * @ see Session
+ *
+ * @ see SessionEndpoint
+ *
+ */
class SessionInfo
{
+ /**
+ * The endpoint that initiated the current session.
+ */
SessionEndpoint* caller;
+
+ /**
+ * The duration of the 'connected' time for this session.
+ */
long connectedTime;
+
+ /**
+ * A textual description of the current state of the session. For
+ * example: pending, connected, hanging up.
+ * TODO: Some standardized values, enum type, etc. might be
+ * desirable.
+ */
string currentState;
+
+ /**
+ * The endpoint handling the destination session.
+ */
SessionEndpoint* destination;
+
+ /**
+ * A textual description of this Session's role in the
+ * current communications.
+ */
string role;
+
+ /**
+ * When the session was initiated.
+ */
AsteriskSCF::System::Time::V1::TimeMarker startTime;
};
+ /**
+ * Instances of SessionListener are used for monitoring changes in one or
+ * more sessions. Session objects have an addListener method that allows
+ * SessionListener objects to be registered with a given session. The
+ * Session object then calls the SessionListener methods to notify
+ * listeners of changes as they occur.
+ *
+ * A SessionListener object may be registered with multiple sessions.
+ *
+ * @see Session
+ */
interface SessionListener
{
+ /**
+ * Notification that a session has reached a known connected state.
+ * For example: In a SIP session, once a 200 OK has been received after
+ * and INVITE.
+ *
+ * @param source The session the event occurred on.
+ *
+ */
void connected(Session* source);
+
+ /**
+ * Notification that a "flash" has occurred on a session.
+ *
+ * @param source The session the event occurred on.
+ *
+ */
void flashed(Session* source);
+
+ /**
+ * Notification that a session has entered a "held" state.
+ *
+ * @param source The session the event occurred on.
+ *
+ */
void held(Session* source);
+
+ /**
+ * Notification that a session is in a transitional state.
+ *
+ * @param source The session the event occurred on.
+ *
+ * @param response An code indentifying the details of the ongoing progress.
+ */
void progressing(Session* source, ResponseCode response);
+
+ /**
+ * Notification that a ring "event" has occurred.
+ *
+ * @param source The session the event occurred on.
+ *
+ */
void ringing(Session* source);
+
+ /**
+ * Notification that a session has completed.
+ *
+ * @param source The session the event occurred on.
+ *
+ * @param response An code describing the why the session stopped.
+ *
+ */
void stopped(Session* source, ResponseCode response);
+
+ /**
+ * Notification that a session has left the "held" state.
+ *
+ * @param source The session the event occurred on.
+ *
+ */
void unheld(Session* source);
};
+ /**
+ * A Session object encapsulates a session oriented dialogue with a peer
+ * agent. Registered SessionListener objects are notified of responses from
+ * the peer as the dialogue progresses.
+ *
+ * @see SessionListener.
+ */
interface Session
{
+ /**
+ * Registers an instance of SessionListener with the current
+ * session.
+ *
+ * @param listener an instance of a SessionListener object.
+ *
+ * @return a SessionInfo object containing the current state of the session.
+ * This allows "listeners" to be configured with a some initial state
+ * to give context to future notifications.
+ *
+ * @see SessionListener
+ *
+ * @see SessionInfo
+ *
+ */
SessionInfo addListener(SessionListener* listener);
+
+ /**
+ * Sends a connect message to the peer.
+ */
void connect();
+
+ /**
+ * Sends a flash to the peer.
+ */
void flash();
+
+ /**
+ * Retrieve the endpoint object that created the current session.
+ *
+ * @return The endpoint object that created the current session.
+ *
+ * @see SessionEndpoint
+ *
+ */
SessionEndpoint* getEndpoint();
+
+ /**
+ * Retrieve information about the current session's state.
+ *
+ * @return A SessionInfo instance with up to date information.
+ *
+ * @see SessionInfo.
+ *
+ */
SessionInfo getInfo();
+
+ /**
+ * Retrieve a media session instance, if available, for the current session.
+ * A media session object may not be available at the time this is called.
+ * For example, in SIP before media details are known.
+ *
+ * @return An AsteriskSCF media session for the current session. May be a
+ * nil reference if the media part of the session has not been initialized.
+ */
AsteriskSCF::Media::V1::Session* getMediaSession();
+
+ /**
+ * Sends a hold notification to the peer.
+ */
void hold();
- void progress();
+
+ /**
+ * Sends a progress notification to the peer
+ *
+ * @param response A code detailing the current progress.
+ *
+ * @see ResponseCode.
+ */
+ void progress(ResponseCode response);
+
+ /**
+ * Removes a listener from the current list. Once removed, a listener
+ * no longer is notified of changes to the session.
+ */
void removeListener(SessionListener* listener);
+
+ /**
+ * Send a ring notification to the peer.
+ */
void ring();
+
+ /**
+ * Start a session dialogue with a peer.
+ */
void start();
+
+ /**
+ * End the dialogue with the peer, sending the
+ * provided response code if appropriate.
+ *
+ * @param response Code identifying the reason the dialog stopped.
+ *
+ */
void stop(ResponseCode response);
+
+ /**
+ * Send a request to a connected endpoint to remove a "hold".
+ */
void unhold();
};
sequence <Session*> SessionSeq;
+ /**
+ * Instances of SessionRouter attempt to establish communications
+ * between a initiating session and a destination, where the destination
+ * session has not yet been established. The details of the operation
+ * are implementation specific but generally speaking the SessionRouter is
+ * responsible (by direct implementation or delegation) of locating and
+ * creating a session for a destination, creating a communication bridge
+ * if required and adding the routed participants to it.
+ *
+ * @see Bridging::V1::Bridge
+ * @see Bridging::V1::BridgeFactory
+ * @see Bridging::V1::BridgeListener
+ *
+ */
interface SessionRouter
{
+ /**
+ * Attempts to establish an end-to-end communication between an
+ * existing session and destination identified by an address or ID.
+ *
+ * @param source The initiating session.
+ *
+ * @param destination The identifier for the destination.
+ */
void routeSession(Session* source, string destination);
};
+ /**
+ * Instances of SessionEndpoint implement a mechanism for creating Session
+ * objects that can communicate with peer entities (external or otherwise).
+ */
interface SessionEndpoint extends AsteriskSCF::Core::Endpoint::V1::BaseEndpoint
{
+ /**
+ * Creates a session for the specified destination, optionally registering
+ * a SessionListener object for notification of changes to the session.
+ *
+ * @param destination A stringified identifier or address for the destination.
+ *
+ * @param callback A SessionListener object to be registered as a listener on the
+ * newly created session. May be a nil reference if an initial listener is not
+ * required.
+ *
+ * @return A newly created session object for the destination.
+ *
+ */
Session* createSession(string destination, SessionListener* callback);
+
+ /**
+ * Returns the active sessions for this session endpoint.
+ *
+ * @return a sequence of Session proxies.
+ */
SessionSeq getSessions();
};
-----------------------------------------------------------------------
--
asterisk-scf/integration/slice.git
More information about the asterisk-scf-commits
mailing list