package com.tilisty.data;
import java.util.ArrayList;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.json.JSONException;
import org.json.JSONObject;
public class TilistyServerHandler extends IoHandlerAdapter {
private DataModelDelegate delegate;
private ArrayList<IoSession> sessions;
public TilistyServerHandler() {
this.delegate = new DataModelDelegate();
this.sessions = new ArrayList<IoSession>();
}
public void sessionOpened(IoSession session) {
session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
this.sessions.add(session);
System.out.println("New connection established...");
}
@Override
public void messageReceived(IoSession session, Object message) {
try {
JSONObject json = new JSONObject(message.toString());
System.out.println("Received Message " + message.toString());
if(json.has("type")) {
JSONObject response = this.delegate.processPacket(json);
session.write(response.toString());
System.out.println("Response sent");
}
} catch(Exception e) {
e.printStackTrace();
}
}
public void submitMessage(Object msg) {
for(int i = 0; i < this.sessions.size(); i++) {
this.sessions.get(i).write(msg.toString());
}
}
@Override
public void sessionClosed(IoSession session) {
for(int i = 0; i < this.sessions.size(); i++) {
if(this.sessions.get(i) == session) {
this.sessions.remove(session);
}
}
}
public void sessionIdle(IoSession session, IdleStatus status) {
session.write("PROBE");
}
}