org.curjent.impl.agent
Class Listeners

java.lang.Object
  extended by org.curjent.impl.agent.Listeners

final class Listeners
extends Object

Call listener configuration.


Field Summary
private  Controller controller
          Owning controller.
private  CallStateListener<?> listener
          Default listener.
private  CallStateListener<?>[] listeners
          Default call state listeners.
private static CallStateListener<?>[] NULL_LISTENERS
          null call state listeners.
 
Constructor Summary
Listeners(Controller controller)
          Agent construction.
 
Method Summary
(package private)  CallStateListener<?> getCallStateListener()
          Returns the agent's default listener.
(package private)  CallStateListener<?> getCallStateListener(CallInfo call)
          Returns the default listener for the given call site.
(package private)  CallStateListener<?> getCallStateListener(CallInfo call, CallState state)
          Returns a call site's listener for a given state.
(package private)  CallStateListener<?> getCallStateListener(CallState state)
          Returns the default listener for a specific state.
private static CallStateListener<?> getEffectiveListener(CallStateListener<?> agentDefault, CallStateListener<?> agentAssigned, CallStateListener<?> callDefault, CallStateListener<?> callAssigned)
          Returns the effective listener for a specific state of a specific call site.
(package private)  void setCallStateListener(CallInfo call, CallState state, CallStateListener<?> listener)
          Sets a call site's listener for a given state and updates its effective listeners.
(package private)  void setCallStateListener(CallInfo call, CallStateListener<?> listener)
          Sets the default listener for the given call site and updates its effective listeners.
(package private)  void setCallStateListener(CallState state, CallStateListener<?> listener)
          Sets the default listener for a specific state and updates the call sites' effective listeners.
(package private)  void setCallStateListener(CallStateListener<?> listener)
          Sets the agent's default listener and updates the call sites' effective listeners.
private static void setEffectiveListeners(CallStateListener<?>[] effective, CallStateListener<?> agentDefault, CallStateListener<?>[] agentAssigned, CallStateListener<?> siteDefault, CallStateListener<?>[] siteAssigned)
          Sets a call site's effective listeners given the agent's assigned listeners for that site.
private  void updateCallStateListeners()
          Updates the effective listeners for all call sites based on the assigned listeners for the agent and its call sites.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

controller

private final Controller controller
Owning controller.


listener

private CallStateListener<?> listener
Default listener. Called if not null and no other non-null listener is applicable.

See Also:
AgentConfig.setCallStateListener(CallStateListener)

listeners

private final CallStateListener<?>[] listeners
Default call state listeners. These are called if no applicable listener is assigned for a call site.

These are in enumeration order. The listener for STARTING is at index 0. The listener for FINISHED is at FINISHED.ordinal().

See Also:
CallState, AgentConfig.setCallStateListener(CallState, CallStateListener)

NULL_LISTENERS

private static final CallStateListener<?>[] NULL_LISTENERS
null call state listeners. Used to hide agent listeners from synthetic calls.

See Also:
setCallStateListener(CallInfo, CallStateListener)
Constructor Detail

Listeners

Listeners(Controller controller)
Agent construction.

Method Detail

getCallStateListener

CallStateListener<?> getCallStateListener()
Returns the agent's default listener.

See Also:
AgentConfig.getCallStateListener()

getCallStateListener

CallStateListener<?> getCallStateListener(CallState state)
Returns the default listener for a specific state.

See Also:
AgentConfig.getCallStateListener(CallState)

setCallStateListener

void setCallStateListener(CallStateListener<?> listener)
Sets the agent's default listener and updates the call sites' effective listeners.

See Also:
AgentConfig.setCallStateListener(CallStateListener), updateCallStateListeners()

setCallStateListener

void setCallStateListener(CallState state,
                          CallStateListener<?> listener)
Sets the default listener for a specific state and updates the call sites' effective listeners.

See Also:
AgentConfig.setCallStateListener(CallState, CallStateListener), updateCallStateListeners()

updateCallStateListeners

private void updateCallStateListeners()
Updates the effective listeners for all call sites based on the assigned listeners for the agent and its call sites.

See Also:
setEffectiveListeners(CallStateListener[], CallStateListener, CallStateListener[], CallStateListener, CallStateListener[])

getCallStateListener

CallStateListener<?> getCallStateListener(CallInfo call)
Returns the default listener for the given call site.

See Also:
CallSite.getCallStateListener()

setCallStateListener

void setCallStateListener(CallInfo call,
                          CallStateListener<?> listener)
Sets the default listener for the given call site and updates its effective listeners.

See Also:
CallSite.setCallStateListener(CallStateListener), setEffectiveListeners(CallStateListener[], CallStateListener, CallStateListener[], CallStateListener, CallStateListener[])

getCallStateListener

CallStateListener<?> getCallStateListener(CallInfo call,
                                          CallState state)
Returns a call site's listener for a given state.

See Also:
CallSite.getCallStateListener(CallState)

setCallStateListener

void setCallStateListener(CallInfo call,
                          CallState state,
                          CallStateListener<?> listener)
Sets a call site's listener for a given state and updates its effective listeners.

See Also:
CallSite.setCallStateListener(CallStateListener), setEffectiveListeners(CallStateListener[], CallStateListener, CallStateListener[], CallStateListener, CallStateListener[])

setEffectiveListeners

private static void setEffectiveListeners(CallStateListener<?>[] effective,
                                          CallStateListener<?> agentDefault,
                                          CallStateListener<?>[] agentAssigned,
                                          CallStateListener<?> siteDefault,
                                          CallStateListener<?>[] siteAssigned)
Sets a call site's effective listeners given the agent's assigned listeners for that site.

Parameters:
effective - Call site's effective listeners, one for each state, each of which is updated based on the other parameters.
agentDefault - Agent's assigned default listener.
agentAssigned - Agent's assigned state listeners.
siteDefault - Call site's assigned listener.
siteAssigned - Call site's assigned state listeners.
See Also:
getEffectiveListener(CallStateListener, CallStateListener, CallStateListener, CallStateListener)

getEffectiveListener

private static CallStateListener<?> getEffectiveListener(CallStateListener<?> agentDefault,
                                                         CallStateListener<?> agentAssigned,
                                                         CallStateListener<?> callDefault,
                                                         CallStateListener<?> callAssigned)
Returns the effective listener for a specific state of a specific call site.

Parameters:
agentDefault - Returns the agent's default listener if no other listener is assigned for the call state or call site. This is the most general listener. It is only notified of call state changes when no other more specific listener is assigned.
agentAssigned - Returns the agent's assigned listener for a specific state if no call site listener is assigned.
callDefault - Returns the call site's default listener if no listener is assigned for the call site or call state.
callAssigned - Returns the call site's assigned listener for a specific state. This is the most specific listener and takes precedence over the other more general listeners. It listens for a specific state of a specific call site.


Copyright 2009-2011 Tom Landon
Apache License 2.0