private void CheckAndAddIfNewClient(ClientFrequencyUpdate clientFrequencyUpdate) { if (clients.ContainsKey(clientFrequencyUpdate.Callsign)) { clients[clientFrequencyUpdate.Callsign].MobileClientOnline(); } else { clients[clientFrequencyUpdate.Callsign] = Client.NewMobileClientOnline(ClientConfigurationManager.Instance.DefaultRadioMobileConfig, clientFrequencyUpdate.Callsign); } }
public void Frequency(string frequency) { _lastClientFrequencyUpdate = new ClientFrequencyUpdate() { Callsign = callsign, Frequency = frequency }; if (started) { dataPublishInputQueue.Add(_lastClientFrequencyUpdate); //Server will just ignore if it's a fixed position } }
private void TaskClientDataSub(CancellationToken cancelToken, BlockingCollection <object> queue, string bind) { using (var subSocket = new SubscriberSocket()) { subSocket.Options.ReceiveHighWatermark = 50; subSocket.Bind(bind); subSocket.Subscribe(""); while (!cancelToken.IsCancellationRequested) { var messageTopicReceived = subSocket.ReceiveFrameString(); int bytesReceived = 0; switch (messageTopicReceived) { case "ClientHeartbeat": ClientHeartbeat clientHeartbeat = subSocket.Deserialise <ClientHeartbeat>(out bytesReceived); serverStatistics.DataBytesReceived += bytesReceived; CheckAndAddIfNewClient(clientHeartbeat); break; case "ClientPositionUpdate": ClientPositionUpdate clientPositionUpdate = subSocket.Deserialise <ClientPositionUpdate>(out bytesReceived); serverStatistics.DataBytesReceived += bytesReceived; CheckAndAddIfNewClient(clientPositionUpdate); UpdateMobileClientPosition(clientPositionUpdate); break; case "ClientFrequencyUpdate": ClientFrequencyUpdate clientFrequencyUpdate = subSocket.Deserialise <ClientFrequencyUpdate>(out bytesReceived); serverStatistics.DataBytesReceived += bytesReceived; CheckAndAddIfNewClient(clientFrequencyUpdate); UpdateMobileClientFrequency(clientFrequencyUpdate); break; } } taskClientDataSub = null; } }
private void UpdateMobileClientFrequency(ClientFrequencyUpdate clientFrequencyUpdate) { clients[clientFrequencyUpdate.Callsign].Frequency = clientFrequencyUpdate.Frequency; }