public IpcCallback <T> Send(T data)
        {
            var request = new IpcEntity <T>(data, Guid.NewGuid(), _client.PortNumber);

            _client.Send(request);

            return(new IpcCallback <T>(this, request.Header.CallbackId));
        }
Beispiel #2
0
        public override Task Send(IpcEntity <T> data)
        {
            return(Task.Factory.StartNew(() =>
            {
                try
                {
                    lock (_sendLock)
                    {
                        using (TcpClient socket = new TcpClient())
                        {
                            socket.Connect(new IPEndPoint(IPAddress.Loopback, PortNumber));

                            string serializedData = JsonConvert.SerializeObject(data);
                            byte[] dataToSend;

                            if (_encryptor != null)
                            {
                                serializedData = _encryptor.Encrypt(serializedData);

                                byte[] a = Convert.FromBase64String(serializedData);
                                string size = a.Length.ToString().PadLeft(4, '0');
                                byte[] sizeByte = Encoding.UTF8.GetBytes(size);

                                var z = new byte[a.Length + sizeByte.Length];
                                sizeByte.CopyTo(z, 0);
                                a.CopyTo(z, sizeByte.Length);

                                dataToSend = z;
                            }
                            else
                            {
                                string c = serializedData.Length.ToString().PadLeft(4, '0') + serializedData;
                                dataToSend = Encoding.UTF8.GetBytes(c);
                            }

                            socket.Client.Send(dataToSend);
                            socket.Close();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.Error.WriteLine($"[ERROR] IpcClient Send: {ex?.ToString()}");
                }
            }));
        }
Beispiel #3
0
 public abstract Task Send(IpcEntity <T> data);
        public void Send(T data, Guid callbackId)
        {
            var request = new IpcEntity <T>(data, callbackId, _client.PortNumber);

            _client.Send(request);
        }