/servers/diameter/core/jdiameter/impl/src/main/java/org/jdiameter/common/impl/app/cxdx/CxDxSession.java

https://github.com/deruelle/mobicents · Java · 59 lines · 37 code · 9 blank · 13 comment · 1 complexity · c5467b5460e42f6fde1eb1f07ed18006 MD5 · raw file

  1. package org.jdiameter.common.impl.app.cxdx;
  2. import java.util.List;
  3. import java.util.concurrent.CopyOnWriteArrayList;
  4. import java.util.concurrent.Future;
  5. import java.util.concurrent.ScheduledThreadPoolExecutor;
  6. import java.util.concurrent.locks.Lock;
  7. import java.util.concurrent.locks.ReentrantLock;
  8. import org.jdiameter.api.NetworkReqListener;
  9. import org.jdiameter.api.app.StateChangeListener;
  10. import org.jdiameter.api.app.StateMachine;
  11. import org.jdiameter.common.api.app.cxdx.CxDxSessionState;
  12. import org.jdiameter.common.api.app.cxdx.ICxDxMessageFactory;
  13. import org.jdiameter.common.impl.app.AppSessionImpl;
  14. /**
  15. * Start time:15:18:44 2009-08-17<br>
  16. * Project: diameter-parent<br>
  17. *
  18. * @author <a href="mailto:baranowb@gmail.com">Bartosz Baranowski </a>
  19. * @author <a href="mailto:brainslog@gmail.com"> Alexandre Mendonca </a>
  20. */
  21. public abstract class CxDxSession extends AppSessionImpl implements NetworkReqListener, StateMachine {
  22. private static final long serialVersionUID = 1L;
  23. public static final int _TX_TIMEOUT=30*1000;
  24. protected Lock sendAndStateLock = new ReentrantLock();
  25. protected static final ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(4);
  26. protected List<StateChangeListener> stateListeners = new CopyOnWriteArrayList<StateChangeListener>();
  27. protected CxDxSessionState state = CxDxSessionState.IDLE;
  28. protected Future timeoutTaskFuture;
  29. protected ICxDxMessageFactory messageFactory;
  30. public CxDxSession() {
  31. super();
  32. }
  33. public void addStateChangeNotification(StateChangeListener listener) {
  34. if (!stateListeners.contains(listener)) {
  35. stateListeners.add(listener);
  36. }
  37. }
  38. public void removeStateChangeNotification(StateChangeListener listener) {
  39. stateListeners.remove(listener);
  40. }
  41. /*
  42. * (non-Javadoc)
  43. *
  44. * @see org.jdiameter.api.app.AppSession#isStateless()
  45. */
  46. public boolean isStateless() {
  47. //Right?
  48. return true;
  49. }
  50. }