Package net.alteiar.newversion.server

Source Code of net.alteiar.newversion.server.ServerGeneralDocument

package net.alteiar.newversion.server;

import java.io.IOException;
import java.util.Arrays;

import net.alteiar.newversion.server.kryo.NetworkKryoInit;
import net.alteiar.newversion.shared.reply.ReplyCampaignServer;
import net.alteiar.newversion.shared.reply.ReplyIdsClient;
import net.alteiar.newversion.shared.request.RequestCampaignClient;
import net.alteiar.newversion.shared.request.RequestDelete;
import net.alteiar.newversion.shared.request.RequestIdsServer;
import net.alteiar.shared.UniqueID;

import com.esotericsoftware.kryonet.Connection;
import com.esotericsoftware.kryonet.Listener;
import com.esotericsoftware.kryonet.Server;

public class ServerGeneralDocument extends Listener {
  private final ServerDocuments manager;
  private final Server server;

  public ServerGeneralDocument(ServerDocuments manager, int portTCP)
      throws IOException {
    this.manager = manager;

    // int buffere50mo = 52428800;
    int buffer1mo = 1024000;
    int bufferSize = buffer1mo;
    server = new Server(bufferSize, bufferSize);
    server.start();
    server.bind(portTCP, portTCP + 1);

    NetworkKryoInit init = new NetworkKryoInit();
    init.registerKryo(server.getKryo());

    server.addListener(this);
  }

  public void stop() {
    server.close();
    server.stop();
  }

  @Override
  public void connected(Connection conn) {
    conn.updateReturnTripTime();
  }

  @Override
  public void received(Connection connection, Object object) {
    if (object instanceof RequestDelete) {
      server.sendToAllTCP(object);
      // this.manager.documentClosed((RequestDelete) object);
    } else if (object instanceof RequestCampaignClient) {
      System.out.println("Request campaign: "
          + server.getConnections().length);
      boolean otherClient = server.getConnections().length > 1;

      if (otherClient) {
        requestReceived(connection, (RequestCampaignClient) object);
      } else {
        replyReceived(connection, null);
      }
    } else if (object instanceof ReplyIdsClient) {
      replyReceived(connection, ((ReplyIdsClient) object).getIds());
    }
  }

  private void requestReceived(Connection conn, RequestCampaignClient request) {
    System.out.println("request received");

    Connection dest = null;

    int min = Integer.MAX_VALUE;
    for (Connection destConn : server.getConnections()) {
      if (conn.getID() != destConn.getID()
          && destConn.getReturnTripTime() < min) {
        min = destConn.getReturnTripTime();
        dest = destConn;
      }
    }

    dest.sendTCP(new RequestIdsServer());
  }

  private void replyReceived(Connection conn, UniqueID[] ids) {
    System.out.println("request reply " + Arrays.toString(ids));
    server.sendToAllTCP(new ReplyCampaignServer(manager.getSpecificPath(),
        ids));
  }

}
TOP

Related Classes of net.alteiar.newversion.server.ServerGeneralDocument

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.