org.granite.client.messaging.channel.amf
Class AbstractAMFMessagingChannel

java.lang.Object
  extended by org.granite.client.messaging.channel.AbstractChannel<Transport>
      extended by org.granite.client.messaging.channel.AbstractHTTPChannel
          extended by org.granite.client.messaging.channel.amf.AbstractAMFChannel
              extended by org.granite.client.messaging.channel.amf.AbstractAMFMessagingChannel
All Implemented Interfaces:
Runnable, Channel, MessagingChannel, SessionAwareChannel, TransportStopListener
Direct Known Subclasses:
AMFMessagingChannel, JMFAMFMessagingChannel

public class AbstractAMFMessagingChannel
extends AbstractAMFChannel
implements MessagingChannel

Author:
Franck WOLFF

Field Summary
protected  MessagingCodec<Message[]> codec
           
protected  AtomicReference<String> connectMessageId
           
protected  ConcurrentMap<String,Consumer> consumersMap
           
protected  long reconnectAttempts
           
protected  long reconnectIntervalMillis
           
protected  long reconnectMaxAttempts
           
protected  AtomicReference<org.granite.client.messaging.channel.amf.AbstractAMFMessagingChannel.ReconnectTimerTask> reconnectTimerTask
           
protected  String sessionId
           
 
Fields inherited from class org.granite.client.messaging.channel.AbstractHTTPChannel
authenticated, defaultTimeToLive, maxConcurrentRequests, pinged
 
Fields inherited from class org.granite.client.messaging.channel.AbstractChannel
clientId, credentials, id, transport, transportData, uri
 
Fields inherited from interface org.granite.client.messaging.channel.Channel
BYTEARRAY_BODY_HEADER, DEFAULT_TIME_TO_LIVE, RECONNECT_INTERVAL_MS_KEY, RECONNECT_MAX_ATTEMPTS_KEY
 
Constructor Summary
protected AbstractAMFMessagingChannel(MessagingCodec<Message[]> codec, Transport transport, String id, URI uri)
           
 
Method Summary
 void addConsumer(Consumer consumer)
           
protected  void cancelReconnectTimerTask()
           
protected  boolean connect()
           
protected  TransportMessage createTransportMessage(AsyncToken token)
           
protected  ResponseMessage decodeResponse(InputStream is)
           
 ResponseMessageFuture disconnect(ResponseListener... listeners)
           
 void onError(TransportMessage message, Exception e)
           
 boolean removeConsumer(Consumer consumer)
           
protected  void scheduleReconnectTimerTask()
           
 void setSessionId(String sessionId)
           
 
Methods inherited from class org.granite.client.messaging.channel.amf.AbstractAMFChannel
convertFromAmf, convertFromAmf, convertToAmf
 
Methods inherited from class org.granite.client.messaging.channel.AbstractHTTPChannel
getDefaultTimeToLive, getMaxConcurrentRequests, getRequest, isAuthenticated, isStarted, logout, onCancelled, onMessage, onStop, run, schedule, send, setDefaultTimeToLive, start, stop
 
Methods inherited from class org.granite.client.messaging.channel.AbstractChannel
getClientId, getCredentials, getId, getTransport, getTransportData, getUri, setCredentials, setTransportData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.granite.client.messaging.channel.Channel
getClientId, getCredentials, getDefaultTimeToLive, getId, getTransport, getTransportData, getUri, isAuthenticated, isStarted, logout, onCancelled, onMessage, send, setCredentials, setDefaultTimeToLive, setTransportData, start, stop
 

Field Detail

codec

protected final MessagingCodec<Message[]> codec

sessionId

protected String sessionId

consumersMap

protected final ConcurrentMap<String,Consumer> consumersMap

connectMessageId

protected final AtomicReference<String> connectMessageId

reconnectTimerTask

protected final AtomicReference<org.granite.client.messaging.channel.amf.AbstractAMFMessagingChannel.ReconnectTimerTask> reconnectTimerTask

reconnectIntervalMillis

protected volatile long reconnectIntervalMillis

reconnectMaxAttempts

protected volatile long reconnectMaxAttempts

reconnectAttempts

protected volatile long reconnectAttempts
Constructor Detail

AbstractAMFMessagingChannel

protected AbstractAMFMessagingChannel(MessagingCodec<Message[]> codec,
                                      Transport transport,
                                      String id,
                                      URI uri)
Method Detail

setSessionId

public void setSessionId(String sessionId)
Specified by:
setSessionId in interface MessagingChannel
Specified by:
setSessionId in interface SessionAwareChannel

connect

protected boolean connect()

addConsumer

public void addConsumer(Consumer consumer)
Specified by:
addConsumer in interface MessagingChannel

removeConsumer

public boolean removeConsumer(Consumer consumer)
Specified by:
removeConsumer in interface MessagingChannel

disconnect

public ResponseMessageFuture disconnect(ResponseListener... listeners)
Specified by:
disconnect in interface MessagingChannel

createTransportMessage

protected TransportMessage createTransportMessage(AsyncToken token)
                                           throws UnsupportedEncodingException
Specified by:
createTransportMessage in class AbstractHTTPChannel
Throws:
UnsupportedEncodingException

decodeResponse

protected ResponseMessage decodeResponse(InputStream is)
                                  throws IOException
Specified by:
decodeResponse in class AbstractHTTPChannel
Throws:
IOException

onError

public void onError(TransportMessage message,
                    Exception e)
Specified by:
onError in interface Channel
Overrides:
onError in class AbstractHTTPChannel

cancelReconnectTimerTask

protected void cancelReconnectTimerTask()

scheduleReconnectTimerTask

protected void scheduleReconnectTimerTask()