/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.server.handlers;
import com.eas.script.Scripts;
import com.eas.sensors.api.Packet;
import com.eas.sensors.api.PacketReciever;
import com.eas.sensors.api.RetranslateFactory;
import com.eas.server.PlatypusServerCore;
import com.eas.server.Session;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author mg
*/
public class PositioningPacketReciever implements PacketReciever {
public static final String RECIEVER_METHOD_NAME = "recieved";
protected String moduleName;
protected PlatypusServerCore serverCore;
private final RetranslateFactory sender;
public PositioningPacketReciever(PlatypusServerCore aServer, String aModuleName, RetranslateFactory aPacketSender) {
super();
serverCore = aServer;
moduleName = aModuleName;
sender = aPacketSender;
}
@Override
public Object received(Packet aPacket) throws Exception {
Session session = serverCore.getSessionManager().getSystemSession();
Scripts.LocalContext context = new Scripts.LocalContext(session.getPrincipal(), session);
session.getSpace().process(context, () -> {
serverCore.executeMethod(moduleName, RECIEVER_METHOD_NAME, new Object[]{aPacket}, true, (Object result) -> {
if (result != null) {
assert result instanceof String;
assert sender != null;
sender.send(aPacket, (String) result);
}
}, (Exception ex) -> {
Logger.getLogger(PositioningPacketReciever.class.getName()).log(Level.WARNING, null, ex);
});
});
return null;
}
}