Example #1
0
        public virtual async Task <bool> SendToConnectionAsync <S>(S packet, IConnectionTcpServer connection) where S : IPacket
        {
            try
            {
                if (_handler != null &&
                    _handler.IsServerRunning &&
                    _connectionManager.IsConnectionOpen(connection))
                {
                    if (!await _handler.SendAsync(packet, connection))
                    {
                        return(false);
                    }

                    await FireEventAsync(this, new TcpMessageServerEventArgs
                    {
                        MessageEventType = MessageEventType.Sent,
                        Packet           = packet,
                        Connection       = connection,
                    });

                    return(true);
                }
            }
            catch (Exception ex)
            {
                await FireEventAsync(this, new TcpErrorServerEventArgs
                {
                    Connection = connection,
                    Exception  = ex,
                    Message    = ex.Message
                });
            }

            return(false);
        }