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; } } }
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); }
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; } }