/*
* DrakkarKeel - An Enterprise Collaborative Search Platform
*
* The contents of this file are subject under the terms described in the
* DRAKKARKEEL_LICENSE file included in this distribution; you may not use this
* file except in compliance with the License.
*
* 2013-2014 DrakkarKeel Platform.
*/
package drakkar.stern.servant;
import Ice.Current;
import Ice.ObjectPrx;
import drakkar.oar.Communication;
import drakkar.oar.Seeker;
import drakkar.oar.exception.SeekerException;
import drakkar.oar.exception.SessionException;
import drakkar.oar.slice.client.ClientSidePrx;
import drakkar.oar.slice.login._RoleDisp;
import drakkar.oar.slice.server.ServerSide;
import drakkar.oar.slice.server.ServerSidePrx;
import drakkar.oar.slice.server.ServerSidePrxHelper;
import drakkar.oar.slice.server.ServerSidePrxHolder;
import drakkar.oar.util.OutputMonitor;
import drakkar.stern.controller.ServerSideController;
import java.io.IOException;
/**
* Esta clase constitye el sirviente del objeto ice Configuration, por lo cual
* implementa los métodos definidos en esta interfaz, los cuales tienen objetivo
* brindar a los desarrolladores operaciones que le permitan la administración
* del servidor.
*/
public class RoleServant extends _RoleDisp {
private Communication communication;
private Servant servant;
private ServerSidePrx serverSidePrx;
private String session;
/**
*
* @param comm
* @param server
* @param sessionName
*/
public RoleServant(Communication comm, Servant server, String sessionName) {
this.communication = comm;
this.servant = server;
this.session = sessionName;
}
/**
*
* @param seeker
* @param seekerPrx
* @param serverHolder
* @param current
*/
public synchronized void login(Seeker seeker, ClientSidePrx seekerPrx, ServerSidePrxHolder serverHolder, Current current) {
try {
ServerSide serverSide = new ServerSideController(this.servant, seeker, seekerPrx, this.session);
ObjectPrx proxy = this.communication.getAdapter().addWithUUID(serverSide);
serverSidePrx = ServerSidePrxHelper.uncheckedCast(proxy);
serverHolder.value = serverSidePrx;
} catch (SessionException ex) {
OutputMonitor.printStream("Session", ex);
} catch (SeekerException ex) {
OutputMonitor.printStream("Seeker", ex);
} catch (IOException ex) {
OutputMonitor.printStream("IO", ex);
}
}
public synchronized void disconnect(Current __current) {
}
}