/// <summary> /// Returns a task which represents message processing by the event target. /// </summary> /// <param name="message">Message to process.</param> /// <returns>Task which represents message processing.</returns> public Task ProcessMessage(NuntiusMessage message) { return Task.Factory.StartNew(() => { lock (_lock) { _lastMessage = message; if (_taskWhichSendsMessage == null) { _taskWhichSendsMessage = Task.Factory.StartNew(async () => { await Task.Delay(_intervalInMs); lock (_lock) { // Save pointer because send is async so the receiver could get null. var msg = _lastMessage; if (!_endInvoked) SafelyInvokeSendEvent(msg); _lastMessage = null; _taskWhichSendsMessage = null; } }); } } }); }
/// <summary> /// Returns a task which represents message processing by the event target. /// </summary> /// <param name="message">Message to process.</param> /// <returns>Task which represents message processing.</returns> public Task ProcessMessage(NuntiusMessage message) { Log(message); return Task.Factory.StartNew(() => { SafelyInvokeSendEvent(message); }); }
private NuntiusMessage MapEventDataToNuntiusMessage(EventData eventData) { var message = new NuntiusMessage(); foreach (var keyPair in eventData.Properties) { message[keyPair.Key] = keyPair.Value.ToString(); } return message; }
public Task ProcessMessage(NuntiusMessage message) { _preTaskBody?.Invoke(message); return Task.Factory.StartNew(() => { _filterBody?.Invoke(message); SafelyInvokeSendEvent(message); }); }
public Task ProcessMessage(NuntiusMessage message) { var azureMessage = new Message(); azureMessage.MessageId = _endpointId; foreach (var keyValue in message.Properties) { azureMessage.Properties[keyValue.Key] = keyValue.Value; } return _deviceClient.SendEventAsync(azureMessage); }
/// <summary> /// Offers the message to the set which should behave appropriately. If the set if not in k-anonymity /// state with the offered message, it should return null; otherwise appropriate output message should /// be returned. This method is called from multiple threads. /// </summary> /// <param name="inputMessage">Message offered to the set.</param> /// <returns></returns> public virtual NuntiusMessage OfferMessage(NuntiusMessage inputMessage) { var occurences = Interlocked.Add(ref _occurences, 1); Task.Factory.StartNew(async () => { await Task.Delay(_lifespanInMilliseconds); Interlocked.Add(ref _occurences, -1); }); if (occurences >= _k) return _setToMessage(this); return null; }
/// <summary> /// Returns a task which represents message processing by the event target. /// </summary> /// <param name="message">Message to process.</param> /// <returns>Task which represents message processing.</returns> public Task ProcessMessage(NuntiusMessage message) { return Task.Factory.StartNew(() => { foreach (var key in _keysToDelete) { if (!message.RemoveProperty(key) && _checkKeyPressenceInMessage) throw new KeyNotFoundException($"Key {key} was not found in the message: {message}."); } SafelyInvokeSendEvent(message); }); }
/// <summary> /// Returns a task which represents message processing by the event target. /// </summary> /// <param name="message">Message to process.</param> /// <returns>Task which represents message processing.</returns> public Task ProcessMessage(NuntiusMessage message) { return Task.Factory.StartNew(() => { var setId = _chooseSet(message); IKAnonymitySet set; if (!_sets.TryGetValue(setId, out set)) { throw new KeyNotFoundException( $"Element for message {message} returned set id {setId} which was not present between sets."); } var result = set.OfferMessage(message); if (result != null) SafelyInvokeSendEvent(result); }); }
/// <summary> /// Returns a task which represents message processing by the event target. /// </summary> /// <param name="message">Message to process.</param> /// <returns>Task which represents message processing.</returns> public Task ProcessMessage(NuntiusMessage message) { return Task.Factory.StartNew(() => { foreach (var key in _keysToHash) { var value = message[key]; if (value == null) { throw new KeyNotFoundException($"Key {key} was not present in the message."); } if (_salt != null) value += _salt(); var hash = _hashProvider.ComputeHash(Encoding.UTF8.GetBytes(value)); message[key] = GetHexaString(hash); } SafelyInvokeSendEvent(message); }); }
/// <summary> /// Logs a message. /// </summary> /// <param name="message">Message to log.</param> public void Log(NuntiusMessage message) { _writer.WriteLine(_messageToString(message)); }
/// <summary> /// Returns a task which represents message processing by the event target. /// </summary> /// <param name="message">Message to process.</param> /// <returns>Task which represents message processing.</returns> public Task ProcessMessage(NuntiusMessage message) { _lastMessage = message; return Task.FromResult<object>(null); }
/// <summary> /// Sends a new message. /// </summary> /// <param name="message">Message to send.</param> public virtual void SendMessage(NuntiusMessage message) { SafelyInvokeSendEvent(message); }