org.teleal.cling.protocol
Class ReceivingSync<IN extends StreamRequestMessage,OUT extends StreamResponseMessage>

java.lang.Object
  extended by org.teleal.cling.protocol.ReceivingAsync<IN>
      extended by org.teleal.cling.protocol.ReceivingSync<IN,OUT>
Type Parameters:
IN - The type of incoming UPnP message handled by this protocol.
OUT - The type of response UPnP message created by this protocol.
All Implemented Interfaces:
Runnable
Direct Known Subclasses:
ReceivingAction, ReceivingEvent, ReceivingRetrieval, ReceivingSubscribe, ReceivingUnsubscribe

public abstract class ReceivingSync<IN extends StreamRequestMessage,OUT extends StreamResponseMessage>
extends ReceivingAsync<IN>

Supertype for all synchronously executing protocols, handling reception of UPnP messages and return a response.

After instantiation by the ProtocolFactory, this protocol run()s and calls its own ReceivingAsync.waitBeforeExecution() method. By default, the protocol does not wait before then proceeding with executeSync().

The returned response will be available to the client of this protocol. The client will then call either responseSent(org.teleal.cling.model.message.StreamResponseMessage) or responseException(Throwable), depending on whether the response was successfully delivered. The protocol can override these methods to decide if the whole procedure it is implementing was successful or not, including not only creation but also delivery of the response.

Author:
Christian Bauer

Field Summary
protected  OUT outputMessage
           
 
Constructor Summary
protected ReceivingSync(UpnpService upnpService, IN inputMessage)
           
 
Method Summary
protected  void execute()
           
protected abstract  OUT executeSync()
           
 OUT getOutputMessage()
           
 void responseException(Throwable t)
          Called by the client of this protocol if the returned response was not delivered.
 void responseSent(StreamResponseMessage responseMessage)
          Called by the client of this protocol after the returned response has been successfully delivered.
 String toString()
           
 
Methods inherited from class org.teleal.cling.protocol.ReceivingAsync
getFirstHeader, getInputMessage, getUpnpService, run, waitBeforeExecution
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

outputMessage

protected OUT extends StreamResponseMessage outputMessage
Constructor Detail

ReceivingSync

protected ReceivingSync(UpnpService upnpService,
                        IN inputMessage)
Method Detail

getOutputMessage

public OUT getOutputMessage()

execute

protected final void execute()
Specified by:
execute in class ReceivingAsync<IN extends StreamRequestMessage>

executeSync

protected abstract OUT executeSync()

responseSent

public void responseSent(StreamResponseMessage responseMessage)
Called by the client of this protocol after the returned response has been successfully delivered.

NOOP by default.


responseException

public void responseException(Throwable t)
Called by the client of this protocol if the returned response was not delivered.

NOOP by default.

Parameters:
t - The reason why the response wasn't delivered.

toString

public String toString()
Overrides:
toString in class ReceivingAsync<IN extends StreamRequestMessage>


Copyright © 2010 Teleal GmbH, Switzerland. All Rights Reserved.