/// <summary> /// Sends the specified message. /// </summary> /// <param name="message">The message to send.</param> public Task SendAsync(ISenderMessage message) { var shouldCompress = message.ShouldCompress(_compressed); var stringValue = shouldCompress ? MessageCompression.Compress(message.StringValue) : message.StringValue; var namedPipeMessage = new NamedPipeMessage { StringValue = stringValue, MessageFormat = message.MessageFormat, Priority = message.Priority, Headers = new Dictionary <string, string>() }; var originatingSystemAlreadyExists = false; foreach (var header in message.Headers) { if (header.Key == HeaderName.OriginatingSystem) { originatingSystemAlreadyExists = true; } namedPipeMessage.Headers.Add(header.Key, header.Value); } namedPipeMessage.Headers[HeaderName.MessageFormat] = message.MessageFormat.ToString(); if (!originatingSystemAlreadyExists) { namedPipeMessage.Headers[HeaderName.OriginatingSystem] = "NamedPipe"; } if (shouldCompress) { namedPipeMessage.Headers[HeaderName.CompressedPayload] = "true"; } var messageString = _serializer.SerializeToString(namedPipeMessage); _messages.Add(messageString); return(_completedTask); }
/// <summary> /// Initializes a new instance of the <see cref="NamedPipeReceiverMessage"/> class. /// </summary> /// <param name="namedPipeMessage">The message that was sent.</param> internal NamedPipeReceiverMessage(NamedPipeMessage namedPipeMessage) { _namedPipeMessage = namedPipeMessage; }
private void BW_NPipe_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { /* * var server = new NamedPipeServer("npstest"); * server.StartListen(); * * while (work) * { * sw.Restart(); * var _in = server.AwaitSingleMessageAsync<char[]>().Result; * string s = new string(_in.Message); * Console.WriteLine("<<" + s); * Task.Run(async () => * { * if(await is_pinged()) responce = GetFromNet(); * else * { * responce = "NOT PINGED"; * } * ; * await server.SendMessageToAllAsync(responce+">>" + s); * }).Wait(1000); * sw.Stop(); * if(sw.ElapsedMilliseconds < 1000) Thread.Sleep((int)(1000-sw.ElapsedMilliseconds)); * } */ Console.WriteLine("CALL" + work + "|" + (server == null)); bool work_now = true; string s = ""; int trys = 99; while (server == null) { NewServer(); trys--; Task.Delay(1000); if (trys == 0) { throw new Exception("BAD DAY"); } } //else if (server != null) { var _1 = server.AwaitSingleMessageAsync <char[]>(ct); _1.ConfigureAwait(false); var _3 = _1.GetAwaiter(); NamedPipeMessage <char[]> _4 = null; try { _4 = _3.GetResult(); } catch (OperationCanceledException OCE) { Console.WriteLine(OCE); work_now = false; } catch (NullReferenceException NRE) { Console.WriteLine(NRE); work_now = false; } catch (Exception exception) { Console.WriteLine(exception); throw; } if (work_now && work) { Task.Run(async() => { if (_4 == null) { return; } s = new string(_4.Message); //fastColoredTextBox1.AppendText("\n" + s + "<<"); if (await is_pinged().ConfigureAwait(false)) { responce = GetFromNet(); } else { responce = "NOT PINGED"; } await server.SendMessageToAllAsync("\n" + responce + "|>>" + s, ct) .ConfigureAwait(false); }, ct).Wait(10000, ct); } } }