org.echarts.servlet.sip.machines
Class SubscriberB2buaFSM

java.lang.Object
  extended by org.echarts.Machine
      extended by org.echarts.StateMachine
          extended by org.echarts.TransitionMachine
              extended by org.echarts.servlet.sip.machines.SubscriberB2buaFSM
All Implemented Interfaces:
java.io.Serializable


public class SubscriberB2buaFSM
extends TransitionMachine

Back-to-back User Agent machine to be used with Application Composition framework. A subscriber port is associated with the caller when the machine is invoked in the originating regsion, and with the callee when the machine is invoked in the terminating region. Receives INVITE on BoxPort. Uses optional RequestModifier object to change Request-URI for outgoing INVITE. In CONNECTED state, INFO messages are passed transparently between caller and callee. Similar to the RI/TCK sample B2BUA application (version 1.0.9), there are two unhandled protocol level race conditions: 1) CANCEL to callee and 200 OK to INVITE from callee crossed: (RFC3261 sec 15) Because the container has already sent 487 to caller, the application should send ACK then BYE to callee to terminate the callee side. 2) CANCEL from caller and 200 OK to INVITE to caller crossed: (JSR116 sec 7.2.3) In the case where container receives CANCEL before application tries to send 200 OK to INVITE to caller side, the send() will throw IllegalStateException. This exception should be caught, and the application sends ACK then BYE to callee side to terminate the callee side dialog. See TODO items in this file for places where additional handling should be added.

See Also:
Serialized Form

Field Summary
 SipServletRequest calleeInvite
           
 TransparentFSM CONNECTED
           
 
Constructor Summary
SubscriberB2buaFSM(FeatureBox box, java.util.Properties servletProps, javax.servlet.ServletContext context)
          Used when this FSM is specified as machineClassName by servlet
SubscriberB2buaFSM(FeatureBox box, SipPort subscriber, SipPort farparty, RequestModifier reqModifier)
          Used when this FSM is invoked by a parent FSM.
 
Method Summary
 FinalResponse getFailureResponse()
           
 Bye getReceivedBye()
           
 SuccessResponse getSuccessResponse()
           
 
Methods inherited from class org.echarts.TransitionMachine
addMessagelessTransition, addMessageTransition, globalStateString, globalStateString, initializeMessagelessTransitions, initializeMessageTransitions, initializeRoot, localStateString, localStateString, removePort, run, run, runNoQueueing
 
Methods inherited from class org.echarts.StateMachine
setMachineDebugging, setMachineMonitor, setMachineMonitoring
 
Methods inherited from class org.echarts.Machine
getDefaultMachineDebugging, getDefaultMachineDebuggingGlobalStateOutput, getDefaultMachineMonitor, getDefaultMachineMonitorFilter, getDefaultMachineMonitoring, getMachineDebugging, getMachineDebuggingGlobalStateOutput, getMachineID, getMachineIndex, getMachineMonitor, getMachineMonitoring, getParentMachine, getRootMachine, getSystemDebugging, getSystemMonitoring, putEvent, setDebugging, setDefaultMachineDebugging, setDefaultMachineDebuggingGlobalStateOutput, setDefaultMachineMonitor, setDefaultMachineMonitorFilter, setDefaultMachineMonitoring, setMachineDebuggingGlobalStateOutput, setSystemDebugging, setSystemMonitoring, statePathString, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

calleeInvite

public SipServletRequest calleeInvite

CONNECTED

public TransparentFSM CONNECTED
Constructor Detail

SubscriberB2buaFSM

public SubscriberB2buaFSM(FeatureBox box,
                          SipPort subscriber,
                          SipPort farparty,
                          RequestModifier reqModifier)
                   throws java.lang.Exception
Used when this FSM is invoked by a parent FSM.

Throws:
java.lang.Exception

SubscriberB2buaFSM

public SubscriberB2buaFSM(FeatureBox box,
                          java.util.Properties servletProps,
                          javax.servlet.ServletContext context)
                   throws java.lang.Exception
Used when this FSM is specified as machineClassName by servlet

Throws:
java.lang.Exception
Method Detail

getSuccessResponse

public SuccessResponse getSuccessResponse()

getFailureResponse

public FinalResponse getFailureResponse()

getReceivedBye

public Bye getReceivedBye()