|
JCAT v0.3.1 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
The JcatConnection interface extends the JccConnection interface. While the JccConnection interface specified the relationship between the JccCall and JccAddress objects, JcatConnection is also associated additionally with a JcatTerminal (through the JcatTerminalConnection object). This is expected to enable advanced call control services which require multiple terminals per address or multiple addresses per terminal. These capabilities would be needed given the potential of devices today such as the PDA (considered as a terminal), which can handle voice calls as VOIP as well as using the mobile voice networks (each of which requires separate addresses).
Thus, each JcatConnection object is associated directly with a JcatCall, a JcatAddress and a JcatTerminalConnection object. The JcatConnection object has a finite state machine associated with it. A JcatConnection object maintains a state that reflects the relationship between a JcatCall and a JcatAddress as well as between the JcatCall and the JcatTerminal (through the JcatTerminalConnection object). The JcatConnection state is important to the application because it indicates a logical view to the application. The application can take specific actions on the JcatConnection object when it is in a specific state and specific events have been reported to the application.
In each state, the connection object can detect certain events, which can be reported to an application. As in the case of a JccConnection object, the same JcatConnection object may not be used in another call. The existence of a JcatConnection implies that its address is associated with its call in the manner described by the JcatConnection's state. In addition, this also implies that the JcatTerminalConnection is associated with the JcatCall object.
While a single FSM is specified for the JcatCall, the states traversed by a particular endpoint depends on the role of the endpoint --whether the endpoint originated the call or whether the endpoint is receiving a call. Based on this, we consider two types of connection objects, namely origintaing connection (O-Connection) and terminating connection (T-Connection) objects. An O-Connection object represents an association between a call object and an originating endpoint represented by a JcatAddress object. A T-Connection object represents an association between a call object and a terminating address object.
Note that this state machine is a refinement of the JccConnection FSM. The CONNECTED state of JccConnection is divided into a CONNECTED state and a SUSPENDED state. Since the states defined in the JcatConnection interface provide more detail to the states defined in the JccConnection interface, each state in the JccConnection interface corresponds to a state defined in the JcatConnection interface. Conversely, each JcatConnection state corresponds to exactly one JccConnection state. This arrangement permits applications to view either the JccConnection state or the JcatConnection state and still see a consistent view.
Field Summary | |
static int |
SUSPENDED
The SUSPENDED state implies that an JcatConnection object is suspended from the call, although its references to the call and address objects will still remain valid. |
Fields inherited from interface javax.csapi.cc.jcc.JccConnection |
ADDRESS_ANALYZE, ADDRESS_COLLECT, ALERTING, AUTHORIZE_CALL_ATTEMPT, CALL_DELIVERY, CONNECTED, DISCONNECTED, FAILED, IDLE |
Method Summary | |
java.util.Set |
getTerminalConnections()
Returns a set of JcatTerminalConnection objects associated with this JcatConnection. |
JcatConnection |
park(java.lang.String destinationAddress)
Parks a Connection at a destination telephone address. |
void |
reconnect()
The application can use the reconnect method in the SUSPENDED
state. |
void |
suspendConnection()
This method suspends causes a transition to the SUSPENDED state. |
Methods inherited from interface javax.csapi.cc.jcc.JccConnection |
answer, attachMedia, continueProcessing, detachMedia, getAddress, getCall, getDestinationAddress, getLastAddress, getMidCallData, getOriginalAddress, getOriginatingAddress, getRedirectedAddress, getState, isBlocked, release, routeConnection, selectRoute |
Field Detail |
public static final int SUSPENDED
Entry criteria:
suspendConnection()
.
Function: The connections for the originating and terminating party are maintained and depending on the incoming network connection, appropriate backward signaling takes place.
According to the received indication the following applies:
JccConnectionEvent.CONNECTION_MID_CALL
.
Exit criteria:
reconnect()
message is received before the
disconnect timer expires. The Connection object returns to the CONNECTED state.
JccConnection.release(int)
).
Method Detail |
public java.util.Set getTerminalConnections()
JcatTerminalConnection.DROPPED
state.
public JcatConnection park(java.lang.String destinationAddress) throws InvalidPartyException, InvalidStateException, MethodNotSupportedException, PrivilegeViolationException, ResourceUnavailableException
CALL_DELIVERY
state or beyond. Parking a JcatConnection at a destination
Address drops the JcatConnection from the JcatCall and creates and returns a new
JcatConnection at the specified destination address.
The new destination telephone address string is given as an argument to this method and must be a valid and
complete telephone address. The new JcatConnection must be in the CONNECTED
state. If this method
is successful, the old (this) JcatConnection moves to the DISCONNECTED
state. All of its
associated JcatTerminalConnections move to the DROPPED
state.
Pre-Conditions:
Post-Conditions:
destinationAddress
- This parameter contains the destination telephone address at which to
park a connection.
InvalidPartyException
- - The specified destination address provided is not valid.
InvalidStateException
- - .
MethodNotSupportedException
- - This method is not supported by the implementation.
PrivilegeViolationException
- - The application does not have the proper authority to invoke this method.
ResourceUnavailableException
- - An internal resource necessary for the successful invocation of this method is not available.public void reconnect() throws InvalidArgumentException, InvalidStateException, MethodNotSupportedException, PrivilegeViolationException, ResourceUnavailableException
SUSPENDED
state.
Pre-Conditions:
Post-Conditions:
InvalidArgumentException
- - The ReconnectParameters provided is not valid.
InvalidStateException
- - Either the Provider was not "in service" or the Call was
not "idle".
MethodNotSupportedException
- - This method is not supported by the implementation.
PrivilegeViolationException
- - The application does not have the proper authority to
invoke this method.
ResourceUnavailableException
- - An internal resource necessary for the successful
invocation of this method is not available.public void suspendConnection() throws InvalidStateException, MethodNotSupportedException, ResourceUnavailableException
SUSPENDED
state.
Pre-Conditions:
Post-Conditions:
InvalidStateException
- - Either the Provider is not "in service", the Call is not "active" or the Connection is not in the "select facility" state.
MethodNotSupportedException
- - This method is not supported by the implementation.
ResourceUnavailableException
- - An internal resource necessary for the successful invocation of this method is not available.
|
JCAT v0.3.1 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright - 2001, 2003 Sun Microsystems