HOME PCB
..Client.javaClientManager.javaCommandHandler.java
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);
        }
    }
}