org.atmosphere.cpr
Class AtmosphereSession

java.lang.Object
  extended by org.atmosphere.cpr.AtmosphereSession

public class AtmosphereSession
extends Object

An AtmosphereSession allow an application to keep track of the AtmosphereResource associated with a remote client. For example, with the long-polling transport, a new AtmosphereResource will be created every time a reconnect occurs. If an application has a reference to the AtmosphereResource, the object will become out of scope, or unusable, after the reconnection. To fix this problem, you can use this class to track and invoke tryAcquire() ()} or acquire()} in order to get the AtmosphereResource.

AtmosphereResource are tracked using the list of associated Broadcaster, e.g you must make sure the AtmosphereResource has called Broadcaster.addAtmosphereResource(AtmosphereResource) once if you want this class to work.

Author:
Jeanfrancois Arcand

Field Summary
protected  BroadcasterListenerAdapter broadcasterListener
           
protected  Semaphore latch
           
protected  com.vaadin.external.org.slf4j.Logger logger
           
protected  Broadcaster[] relatedBroadcasters
           
protected  AtomicReference<AtmosphereResource> resource
           
protected  boolean usesLongPolling
           
protected  String uuid
           
 
Constructor Summary
AtmosphereSession(AtmosphereResource resource)
          Track the current AtmosphereResource with all created Broadcaster
AtmosphereSession(AtmosphereResource r, Broadcaster... broadcasters)
           
 
Method Summary
 AtmosphereResource acquire()
          Retrieve the AtmosphereResource associated with this session.
 void close()
           
 AtmosphereResource tryAcquire()
          Retrieve the AtmosphereResource associated with this session.
 AtmosphereResource tryAcquire(int timeInSecond)
          Retrieve the AtmosphereResource associated with this session.
 String uuid()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final com.vaadin.external.org.slf4j.Logger logger

resource

protected final AtomicReference<AtmosphereResource> resource

uuid

protected String uuid

latch

protected final Semaphore latch

broadcasterListener

protected BroadcasterListenerAdapter broadcasterListener

relatedBroadcasters

protected Broadcaster[] relatedBroadcasters

usesLongPolling

protected final boolean usesLongPolling
Constructor Detail

AtmosphereSession

public AtmosphereSession(AtmosphereResource r,
                         Broadcaster... broadcasters)

AtmosphereSession

public AtmosphereSession(AtmosphereResource resource)
Track the current AtmosphereResource with all created Broadcaster

Parameters:
resource - an AtmosphereResource
Method Detail

acquire

public AtmosphereResource acquire()
Retrieve the AtmosphereResource associated with this session. If there is no AtmosphereResource associated, return null.

Returns:
an AtmosphereResource

tryAcquire

public AtmosphereResource tryAcquire()
                              throws InterruptedException
Retrieve the AtmosphereResource associated with this session. If there is no AtmosphereResource associated, wait until the AtmosphereResource is retrieved. This method will wait 60 seconds and then return.

Returns:
an AtmosphereResource
Throws:
InterruptedException

tryAcquire

public AtmosphereResource tryAcquire(int timeInSecond)
                              throws InterruptedException
Retrieve the AtmosphereResource associated with this session. If there is no AtmosphereResource associated, wait until the AtmosphereResource is retrieved.

If the resource uses long polling as its transport, this method treats the resource as a single use connection and will make subsequent callers wait until the client reconnects and the broadcasterListener's BroadcasterListenerAdapter.onAddAtmosphereResource(org.atmosphere.cpr.Broadcaster, org.atmosphere.cpr.AtmosphereResource) method gets called again.

WARNING: Use this method with long polling only if you intend to broadcast to the returned resource. If no broadcast is made, the client won't have to reconnect, the resource won't get re-added, and any subsequent calls will have to wait until the timeout is reached.

Parameters:
timeInSecond - The timeToWait before continuing the execution
Returns:
an AtmosphereResource or null if the resource was not set and it didn't get set during the timeout
Throws:
InterruptedException

close

public void close()

uuid

public String uuid()


Copyright © 2016. All Rights Reserved.