コード例 #1
0
 /// <summary>
 /// 当发送完成
 /// </summary>
 /// <param name="obj">发送的数据</param>
 private void OnSocketSent(object obj)
 {
     if (OnSent != null)
     {
         var data = (byte[])obj;
         OnSent.Invoke(this, data);
     }
 }
コード例 #2
0
 public void Send(Byte[] data, SendFlags flags, OnSent onSent)
 {
     if (connected)
     {
         client.SendMessageToConnection(connection, data, flags);
         onSent?.Invoke();
     }
 }
コード例 #3
0
        public void Send(string data)
        {
            var newMessage = new Message {
                Data = data, Initiator = this, TimeStamp = DateTime.Now
            };

            History.Add(newMessage);
            OnSent?.Invoke(newMessage);
        }
コード例 #4
0
 public void SendMessage(int itemId, string queueName, Stream data)
 {
     using (var writer = TransportClient.CreateWriter(queueName, CommitOptions.None))
     {
         writer.Write(ReadFully(data));
     }
     this.SenderWorker.Process();
     OnSent?.Invoke(itemId);
 }
コード例 #5
0
        /// <summary>
        ///     Will fire all events according to the queued messages
        /// </summary>
        public void Work()
        {
            if (Stopped)
            {
                throw new InvalidOperationException($"{nameof(EasySocket)} was stopped");
            }
            SocketAsyncEventArgs result;

            while (!_acceptedSockets.IsEmpty)
            {
                if (_acceptedSockets.TryDequeue(out result))
                {
                    OnAccepted?.Invoke(Socket, result);
                }
            }

            while (!_receivedData.IsEmpty)
            {
                if (_receivedData.TryDequeue(out result))
                {
                    OnReceived?.Invoke(Socket, result);
                }
            }

            while (!_receivedFromData.IsEmpty)
            {
                if (_receivedFromData.TryDequeue(out result))
                {
                    OnReceivedFrom?.Invoke(Socket, result);
                }
            }

            while (!_receivedMessageFromData.IsEmpty)
            {
                if (_receivedMessageFromData.TryDequeue(out result))
                {
                    OnReceivedMessageFrom?.Invoke(Socket, result);
                }
            }

            while (!_sendComplete.IsEmpty)
            {
                if (_sendComplete.TryDequeue(out result))
                {
                    OnSent?.Invoke(Socket, result);
                }
            }

            while (!_sendToComplete.IsEmpty)
            {
                if (_sendToComplete.TryDequeue(out result))
                {
                    OnSentTo?.Invoke(Socket, result);
                }
            }
        }
コード例 #6
0
        private void beginSend(IAsyncResult result)
        {
            Buffers.WebSocket.Write buffer = (Buffers.WebSocket.Write)result.AsyncState;

            Socket.EndSend(result);

            if (!buffer.Type.HasFlag(Buffers.WebSocket.Write.DataType.PIN | Buffers.WebSocket.Write.DataType.PON))
            {
                OnSent?.Invoke();
            }
        }
コード例 #7
0
ファイル: User.cs プロジェクト: LebedMax/Programing_Labs
        public void Send(string data)
        {
            // Form a message
            var newMessage = new Message {
                Data = data, Initiator = this, TimeStamp = DateTime.Now
            };

            _history.Add(newMessage);

            // YOUR CODE GOES HERE
            OnSent?.Invoke(newMessage);
        }
コード例 #8
0
        /// <summary>
        /// 当网络频道发送成功
        /// </summary>
        /// <param name="channel">网络频道</param>
        /// <param name="message">发送的数据</param>
        private void OnChannelSent(INetworkChannel channel, byte[] message)
        {
            if (OnSent == null)
            {
                return;
            }

            lock (OnSent)
            {
                if (OnSent != null)
                {
                    OnSent.Invoke(channel, message);
                }
            }
        }
コード例 #9
0
        public void Send(ISession session, IMessage message)
        {
            if (message is IRequest request)
            {
                if (request.RequestId == 0)
                {
                    request.RequestId = request.RequestId = session.GetNextRequestId();
                }
            }

            var bufferWriter = new SpanBufferWriter(stackalloc byte[412]);

            if (message is IEncryptedMessage encryptedMessage)
            {
                if (session.EncryptionParameters is null)
                {
                    if (message is not AcknowledgeMessage)
                    {
                        _logger.Warning(
                            "Attempted to send an encrypted messsage before " +
                            "any encryption parameters were established " +
                            $"(EndPoint='{session.EndPoint}')."
                            );
                        return;
                    }

                    bufferWriter.WriteBool(false);  // IsEncrypted
                    _messageWriter.WriteTo(ref bufferWriter, message, PacketProperty);
                }
                else
                {
                    encryptedMessage.SequenceId = session.GetNextSequenceId();
                    bufferWriter.WriteBool(true);  // IsEncrypted
                    _encryptedMessageWriter.WriteTo(
                        ref bufferWriter, encryptedMessage,
                        session.EncryptionParameters.SendKey,
                        session.EncryptionParameters.SendMac,
                        PacketProperty
                        );
                }
            }
            else
            {
                bufferWriter.WriteBool(false);  // IsEncrypted
                _messageWriter.WriteTo(ref bufferWriter, message, PacketProperty);
            }
            OnSent?.Invoke(session, bufferWriter.Data);
        }
コード例 #10
0
 private void send(string msg)
 {
     client.Send(msg);
     OnSent?.Invoke(client, msg);
 }
コード例 #11
0
 private void OnSendComplete(object sender, SocketAsyncEventArgs socketAsyncEventArgs)
 {
     Task.Run(() => OnSent?.Invoke(this, socketAsyncEventArgs));
 }
コード例 #12
0
ファイル: UdpSocketSendResult.cs プロジェクト: vnvizitiu/leak
 protected override void OnFailed()
 {
     OnSent?.Invoke(new UdpSocketSend(Status, Affected, Socket, Buffer, Endpoint));
 }