void Awake() { if (newClient == null) { newClient = new NewClientEvent(); } if (taskComplete == null) { taskComplete = new TaskCompleteEvent(); } if (newIron == null) { newIron = new NewIronEvent(); } if (newClothes == null) { newClothes = new NewClothesEvent(); } if (timeExpired == null) { timeExpired = new TimeExpiredEvent(); } if (addScore == null) { addScore = new AddScoreEvent(); } }
protected void Update() { while (!NetworkedEntityCoordinator.MarkedForInstantiation.IsEmpty) { NetworkedEntityCoordinator.MarkedForInstantiation.TryDequeue(out var item); var go = Resources.Load("Prefabs/" + item.PrefabName) as GameObject; var entity = go.GetComponent <NetworkedEntity>(); entity.prefab = go; entity.entityId = item.Id; entity.prefabName = item.PrefabName; Instantiate(go); } while (!NetworkedEntityCoordinator.MarkedForUpdate.IsEmpty) { NetworkedEntityCoordinator.MarkedForUpdate.TryDequeue(out var item); (var entity, var packet, var info) = item; var val = GetValue(packet.Data, packet.MemberType); if (val == null) { Debug.LogError("Value is null for some reason"); continue; } switch (info.MemberType) { case MemberTypes.Property: PropertyInfo prop = info as PropertyInfo; if (null != prop && prop.CanWrite) { prop.SetValue(entity, val, null); } break; case MemberTypes.Field: FieldInfo field = info as FieldInfo; if (null != field) { field.SetValue(entity, val); } break; default: Debug.LogWarning( $"{entity.gameObject.name}:{nameof(entity)}->{packet.MemberName} does not exist or is not valid member type"); break; } } while (!NetworkedEntityCoordinator.ClientConnectEventQueue.IsEmpty) { NetworkedEntityCoordinator.ClientConnectEventQueue.TryDequeue(out var item); NewClientEvent?.Invoke(item.Item1, item.Item2); } }
private void NotifyNewClientEvent(String pClientID) { lock (ConnectedClients) { //add client if not exist if (ConnectedClients.All(t => t.ID != pClientID)) { ConnectedClients.Add(new WorkerClient() { ID = pClientID }); } NewClientEvent?.Invoke(ConnectedClients.FirstOrDefault(t => t.ID == pClientID)); NotifyNewLogMessageEvent($"Client connected: {pClientID}"); } }
private void NotifyNewClientEvent(String pClientID) { lock (_clients) { //add client if not exist if (_clients.All(t => t.ID != pClientID)) { App.Current.Dispatcher.Invoke(() => { _clients.Add(new Client() { ID = pClientID }); }); } NewClientEvent?.Invoke(_clients.First(t => t.ID == pClientID)); NotifyNewLogMessageEvent($"Client connected: {pClientID}"); } }
/// <summary> /// Initialize the server with a port number. /// </summary> /// <param name="port">Port number.</param> public MyListener(int port) { Listener = new TcpListener(IPAddress.Any, port); // Create new listner. ListenerThread = new Thread(delegate() // Thread handling connection requests. { try { while (IsRunning) { var newClient = new MyClient(Listener.AcceptTcpClient(), true); Clients.Add(newClient); newClient.NewMessageEvent += NewClient_NewMessageEvent; NewClientEvent?.Invoke(this, newClient); } } catch { Dispose(); } }) { IsBackground = true }; }
public override void Initialize() { //init updater _updateNotifier = new UpdateNotifier(); _updateNotifier.PropertyChanged += (sender, args) => OnPropertyChanged(nameof(VersionStatus)); //forward signalr manager _signalrmanager = new SignalRManager(); _signalrmanager.NewClientEvent += delegate(Client client) { NewClientEvent?.Invoke(client); }; _signalrmanager.ClientDisconnectedEvent += delegate(Client client) { ClientDisconnectedEvent?.Invoke(client); }; _signalrmanager.ClientUpdatedEvent += delegate(Client client) { ClientUpdatedEvent?.Invoke(client); }; _signalrmanager.NewLogMessageEvent += NotifyNewLogMessageEvent; _signalrmanager.NewConsoleLogMessage += delegate(Client pClient, string message) { NewConsoleLogMessage?.Invoke(pClient, message); }; _signalrmanager.WorkRequestedEvent += SignalrmanagerOnWorkRequestedEvent; _signalrmanager.ResultsReceivedEvent += SignalrmanagerOnResultsReceivedEvent; _signalrmanager.Initialize(); //create command manager _commandManager = new CommandManager(); _commandManager.NewLogMessageEvent += NotifyNewLogMessageEvent; _commandManager.Initialize(); base.Initialize(); }
public override Task OnConnectedAsync() { NewClientEvent?.Invoke(this.Context?.ConnectionId); return(base.OnConnectedAsync()); }
public override void Initialize() { //get frontend target var predictionTarget = GetPredictionTarget(); //init fs manager _filesystemManager = new FilesystemManager(); _filesystemManager.NewLogMessageEvent += CoreNotifyLogMessage; _filesystemManager.Initialize(); //configuration manager _configManager = new ConfigurationManager(_filesystemManager); _configManager.NewLogMessageEvent += CoreNotifyLogMessage; _configManager.Initialize(); //forward signalr manager _signalrservermanager = new SignalRServerManager(); _signalrservermanager.NewClientEvent += delegate(WorkerClient client) { NewClientEvent?.Invoke(client); ClientsUpdated(_signalrservermanager.ConnectedClients.Count); }; _signalrservermanager.ClientDisconnectedEvent += delegate(WorkerClient client) { ClientDisconnectedEvent?.Invoke(client); ClientsUpdated(_signalrservermanager.ConnectedClients.Count); }; _signalrservermanager.ClientUpdatedEvent += delegate(WorkerClient client) { ClientUpdatedEvent?.Invoke(client); }; _signalrservermanager.NewLogMessageEvent += CoreNotifyLogMessage; _signalrservermanager.NewConsoleLogMessage += delegate(WorkerClient pClient, string message) { NewConsoleLogMessage?.Invoke(pClient, message); }; _signalrservermanager.NewClientErrorMessageEvent += delegate(WorkerClient pClient, String pErrorMessage, List <String> pErrorLog, WorkPackage pWorkPackage) { _commandManager?.ReceiveErrorFromWorker(pErrorLog, pWorkPackage); }; _signalrservermanager.WorkRequestedEvent += SignalrmanagerOnWorkRequestedEvent; _signalrservermanager.TrainingResultsReceivedEvent += SignalrmanagerOnTrainingResultsReceivedEvent; _signalrservermanager.PredictionResultsReceivedEvent += SignalrmanagerOnPredictionResultsReceivedEvent; _signalrservermanager.Initialize(); //frontend signalr manager _signalrclientmanager = new SignalRClientManager(); _signalrclientmanager.NewLogMessageEvent += CoreNotifyLogMessage; _signalrclientmanager.PredictionRequestedEvent += _signalrclientmanager_PredictionRequestedEvent; _signalrclientmanager.ConfigurationUpdatedEvent += delegate(ConductorConfiguration pConfiguration) { this._commandManager.UpdateConfiguration(pConfiguration); }; _signalrclientmanager.ConnectedEvent += delegate() { _commandManager.ReportConfiguration(); }; if (!String.IsNullOrWhiteSpace(predictionTarget)) { //only connect to frontend if a target is specified _signalrclientmanager.Initialize($"{predictionTarget}/server/rnn"); _signalrclientmanager.ConnectAsync() .ContinueWith(t => { this.ClientsUpdated(_signalrservermanager.ConnectedClients.Count); }, TaskContinuationOptions.OnlyOnRanToCompletion); } else { this.CoreNotifyLogMessage("SignalRClientManager will not attempt to connect to a frontend because none was specified."); } //create command manager _commandManager = new CommandManager(_configManager, _filesystemManager, _signalrservermanager.ConnectedClients); _commandManager.NewLogMessageEvent += CoreNotifyLogMessage; _commandManager.PredictionFinishedEvent += _commandManager_PredictionFinishedEvent; _commandManager.StatusChangedEvent += _commandManager_StatusChangedEvent; _commandManager.Initialize(); base.Initialize(); }