package Program;
import Common.ByteObject;
import Common.Utils;
import Communication.Messages.Handler.MessageHandler;
import Communication.Messages.Handler.MessageHandlerImpl;
import Communication.Messages.Service.MessageSessionImpl;
import Program.Data.CommandData;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
@MessageHandler(name = "Commands", data = CommandData.class, maxSize = 1024)
public class CommandHandler implements MessageHandlerImpl
{
@Override
public void send(DataOutputStream dos, CommandData o, MessageSessionImpl session)
{
try
{
dos.writeLong(o.time);
ByteObject.writeString(dos, o.status.toString());
ByteObject.writeString(dos, o.command.toString());
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public void receive(DataInputStream dis, MessageSessionImpl session)
{
CommandData commandData = new CommandData();
try
{
commandData.time = dis.readLong();
commandData.status = CommandStatus.valueOf(ByteObject.readString(dis));
commandData.command = CommandSimple.valueOf(ByteObject.readString(dis));
switch (commandData.command)
{
case Start:
{
ClientManager.getInstance().start(commandData.time);
System.out.println("Stream Started");
break;
}
case Stop:
{
ClientManager.getInstance().stop();
System.out.println("Stream Stopped");
break;
}
}
commandData.status = CommandStatus.Success;
}
catch (Exception e)
{
e.printStackTrace(System.out);
commandData.status = CommandStatus.Failed;
}
try
{
session.send(commandData);
}
catch (IOException e)
{
e.printStackTrace(System.out);
}
}
}