示例#1
0
    public override void handleMessage(QTMessage message)
    {
        switch (message.messageType)
        {
        case QTMessage.type.WORKER_READY: {
            MasterServerQTClient qtRemoteClient     = (MasterServerQTClient)client;
            WorkerReadyMessage   workerReadyMessage = (WorkerReadyMessage)message;

            qtRemoteClient.remoteType = QTClient.clientType.WORKER_SERVER;
            MasterServerWorker worker = MasterServerManager.instance.workersManager.workers[workerReadyMessage.id];

            RoomInfoMessage roomInfoMessage = new RoomInfoMessage();
            roomInfoMessage.room = worker.room;
            qtRemoteClient.sendMessage(roomInfoMessage);

            worker.onWorkerReady();
            break;
        }

        case QTMessage.type.WORKER_INFO: {
            MasterServerQTClient qtRemoteClient    = (MasterServerQTClient)client;
            WorkerInfoMessage    workerInfoMessage = (WorkerInfoMessage)message;
            MasterServerWorker   worker            = MasterServerManager.instance.workersManager.workers[workerInfoMessage.id];

            worker.room.ip = workerInfoMessage.ip;

            QTDebugger.instance.debug(QTDebugger.debugType.BASE, "Recieved info from Worker(" + worker.room.id + ")...");
            break;
        }
        }
    }
示例#2
0
    public MasterServerWorker spawnWorker(string id)
    {
        RoomInfo room = new RoomInfo();

        room.id   = id;
        room.port = lastWorkerPort;

        MasterServerWorker worker = new MasterServerWorker(room);

        worker.start();
        workers.Add(worker.room.id, worker);

        lastWorkerPort++;

        return(worker);
    }
示例#3
0
    public override void handleMessage(QTMessage message)
    {
        switch (message.messageType)
        {
        case QTMessage.type.REQUEST_NEW_INSTANCE:
            MasterServerQTClient      qtRemoteClient = (MasterServerQTClient)client;
            RequestNewInstanceMessage requestMessage = (RequestNewInstanceMessage)message;

            MasterServerWorker worker = MasterServerManager.instance.workersManager.spawnWorker(Guid.NewGuid().ToString());

            InstanceMessage instanceMessage = new InstanceMessage(requestMessage);
            instanceMessage.room  = worker.room;
            worker.onWorkerReady += () => {
                sendRequestInstanceResponse(qtRemoteClient, instanceMessage);
            };
            break;
        }
    }