/**
*
*/
package ecologylab.oodss.distributed.server.clientsessionmanager;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import ecologylab.collections.Scope;
import ecologylab.oodss.distributed.server.NIODatagramServer;
import ecologylab.oodss.messages.RequestMessage;
import ecologylab.oodss.messages.ResponseMessage;
import ecologylab.oodss.messages.UpdateMessage;
/**
* @author Zachary O. Toups (zach@ecologylab.net)
*
*/
public class DatagramClientSessionManager<S extends Scope, PARENT extends Scope> extends BaseSessionManager<S, PARENT>
{
InetSocketAddress address;
NIODatagramServer server;
SelectionKey mostRecentKey;
/**
* @param sessionId
* @param socket
* @param baseScope
*/
public DatagramClientSessionManager(String sessionId, NIODatagramServer server,
SelectionKey socket, PARENT baseScope, InetSocketAddress address)
{
super(sessionId, server, socket, baseScope);
this.address = address;
this.server = server;
}
/**
* Calls RequestMessage.performService(Scope) and returns the result.
*
* @param request
* - the request message to process.
*/
@Override
public ResponseMessage processRequest(RequestMessage request, InetAddress address)
{
return super.processRequest(request, address);
}
@Override
public InetSocketAddress getAddress()
{
return address;
}
@Override
public void sendUpdateToClient(UpdateMessage update)
{
server.sendMessage(update, mostRecentKey, (long) -1, getAddress());
}
public void updateKey(SelectionKey key)
{
mostRecentKey = key;
}
}