/// <summary> /// Частота в сотых Гц (0.01 Гц). Защита в диапазоне 100..9900 /// </summary> /// <param name="value"></param> public void Frequency(ushort value) { // TODO: ОЧЕНЬ ВАЖНО!!!! частота должна выставляться ВСЕГДА уникастово, а старт-стоп в режиме движения - бродкастово // [04.04.2014 17:33:48] Преймачук Юрий: Привет! Необходимо обеспечить 4 скорости движения вагона №10 (3 км/ч, 6 км/ч, 9 км/ч, 12 км/ч), что соответствует частотам ПЧН: // 3 км/ч - 25 Гц; // 6 км/ч - 50 Гц; // 9 км/ч - 75 Гц; // 12 км/ч - 100 Гц. value = CorrectFrequencyRange(value); if (mFrequencySettings != value) { mFrequencySettings = value; mJournal.Debug(string.Format("{0}: уст. частота: {1}", Id, mFrequencySettings), MessageLevel.System); //mOutputData[1] = mFrequencySettings; //WriteUpdate(isBroadcast ? (byte)0 : mModbusId, 1, new[] { mFrequencySettings }); //if (isBroadcast) // BroadcastData.UpdateData(1, mFrequencySettings); //else UnicastData.UpdateData(1, mFrequencySettings); } }
public void WriteConveyorState() { if (!UnicastData.HasUpdate) { return; } // TODO: данные на включение-выключение должна совпадать с броадкаст для режима движения WriteUpdate(mModbusId, 0, UnicastData.GetData()); }
public void Direction(bool forward) { // TODO: ОЧЕНЬ ВАЖНО!!!! Направление должно выставляться ВСЕГДА уникастово, а старт-стоп в режиме движения - бродкастово if (Status == EngineStatus.Stopped) { //mOutputData[2] = (ushort)(forward ? 0 : 1); //WriteUpdate(mModbusId, 2, new[] { (ushort)(forward ? 0 : 1) }); UnicastData.UpdateData(2, (ushort)(forward ? 0 : 1)); } }
public void SendUnicastData(Interactor publisher, UnicastData unicastData) { // Can we find this client in the subscribers to this topic? var subscriber = _repository.GetSubscribersToFeedAndTopic(unicastData.Feed, unicastData.Topic) .FirstOrDefault(x => x.Key.Id == unicastData.ClientId); if (subscriber.Key == null) { return; } _publisherManager.SendUnicastData(publisher, subscriber.Key, subscriber.Value, unicastData); }
public void WriteState() { if (!UnicastData.HasUpdate) { return; } // TODO: данные на включение-выключение должна совпадать с броадкаст для режима движения var req = UnicastData.GetData(); //WriteUpdate(mModbusId, 0, UnicastData.GetData()); WriteUpdate(mModbusId, 1, new[] { req[1], req[2] }); }
public void TestNoPayload() { using (var stream = new MemoryStream()) { var source = new UnicastData( Guid.NewGuid(), "__admin__", "heartbeat", true, null); source.Write(new DataWriter(stream)); stream.Seek(0, SeekOrigin.Begin); var dest = Message.Read(new DataReader(stream)); Assert.AreEqual(source, dest); } }
public void TestPayload() { using (var stream = new MemoryStream()) { var source = new UnicastData( Guid.NewGuid(), "__admin__", "heartbeat", true, new DataPacket[] { new DataPacket( new HashSet <int> { 1 }, new byte[] { 1, 2, 3, 4, 5, 6 }) }); source.Write(new DataWriter(stream)); stream.Seek(0, SeekOrigin.Begin); var dest = Message.Read(new DataReader(stream)); Assert.AreEqual(source, dest); } }
public void SendUnicastData(IInteractor publisher, UnicastData unicastData, IInteractor subscriber) { _repository.AddPublisher(publisher, unicastData.Feed, unicastData.Topic); subscriber.SendMessage(unicastData); }
private void RaiseOnData(UnicastData message) { RaiseOnData(message.Feed, message.Topic, message.Data, message.IsImage); }
public void SendUnicastData(Interactor publisher, Interactor subscriber, AuthorizationInfo authorization, UnicastData unicastData) { if (!publisher.HasRole(unicastData.Feed, Role.Publish)) { _logger.LogWarning("Rejected request from {Publisher} to publish on feed {Feed}", publisher, unicastData.Feed); return; } publisher.Metrics.UnicastMessages[unicastData.Feed].Inc(); var clientUnicastData = new ForwardedUnicastData( publisher.UserForFeed(unicastData.Feed), publisher.HostForFeed(unicastData.Feed), unicastData.ClientId, unicastData.Feed, unicastData.Topic, unicastData.IsImage, GetAuthorizedData(unicastData.DataPackets, authorization)); _logger.LogDebug("Sending unicast data from {Publisher} to {Subscriber}: {Message}", publisher, subscriber, clientUnicastData); _repository.AddPublisher(publisher, unicastData.Feed, unicastData.Topic); try { subscriber.SendMessage(clientUnicastData); } catch (Exception error) { _logger.LogDebug(error, "Failed to send to subscriber {Subscriber} unicast data {Message}", subscriber, clientUnicastData); } }
public void SendUnicastData(IInteractor publisher, IInteractor subscriber, AuthorizationInfo authorization, UnicastData unicastData) { if (!publisher.HasRole(unicastData.Feed, Role.Publish)) { Log.Warn($"Rejected request from {publisher} to publish on feed {unicastData.Feed}"); return; } var clientUnicastData = authorization.IsAuthorizationRequired ? new ForwardedUnicastData(publisher.User, publisher.Address, unicastData.ClientId, unicastData.Feed, unicastData.Topic, unicastData.IsImage, unicastData.Data.Where(x => authorization.Entitlements.Contains(x.Header)).ToArray()) : new ForwardedUnicastData(publisher.User, publisher.Address, unicastData.ClientId, unicastData.Feed, unicastData.Topic, unicastData.IsImage, unicastData.Data); Log.Debug($"Sending unicast data from {publisher} to {subscriber}: {clientUnicastData}"); _repository.AddPublisher(publisher, clientUnicastData.Feed, clientUnicastData.Topic); try { subscriber.SendMessage(clientUnicastData); } catch (Exception exception) { Log.Debug($"Failed to send to subscriber {subscriber} unicast data {clientUnicastData}", exception); } }