public bool BroadcastPacket(byte[] data, Channel channelNo, PacketFlags flag = PacketFlags.Reliable)
        {
            byte[] temp;
            if (data.Length >= 8)
            {
                temp = _blowfish.Encrypt(data);
            }
            else
            {
                temp = data;
            }

            var packet = new ENet.Packet();

            packet.Create(temp);
            _server.Broadcast((byte)channelNo, ref packet);
            return(true);
        }
        public bool HandlePacket(Peer peer, ENet.Packet packet, Channel channelId)
        {
            var data = new byte[packet.Length];

            Marshal.Copy(packet.Data, data, 0, data.Length);

            // if channel id is HANDSHAKE we should initialize blowfish key and return
            if (channelId == Channel.CHL_HANDSHAKE)
            {
                return(HandleHandshake(peer, data));
            }

            // every packet that is not blowfish go here
            if (data.Length >= 8)
            {
                // TODO: each user will have his unique key
                data = _blowfish.Decrypt(data);
            }
            return(HandlePacket(peer, data, channelId));
        }