public void SendAuthRequest(Server server)
 {
     Log.Debug("SendAuthRequest");
     Packet sp = new Packet(Packet.Opcodes.Auth);
     sp.AddString(server.AuthKey);
     _Client.SendPacket(server,sp);
 }
 public void SendNativeFunction(Server server, string guid,string name, string args, DataStream data)
 {
     Log.Debug("SendNativeFunction: "+name);
     Packet sp = new Packet(Packet.Opcodes.FunctionRequest);
     sp.AddString(guid);
     sp.AddString(name); // name
     sp.AddInt32(0); // response
     sp.AddString(args);
     sp.AddData(data.Data,data.Length);
     _Client.SendPacket(server, sp);
 }
 public void SendTest(Server server)
 {
     Log.Debug("Sending Test packet");
     Packet sp = new Packet(Packet.Opcodes.Test);
     sp.AddString("TEST");
     sp.AddInt32(300);
     sp.AddByte((byte)32);
     sp.AddFloat32(1.234F);
     sp.AddString("TEST2");
     _Client.SendPacket(server, sp);
 }
 public void SendPingReply(Server server)
 {
     Log.Debug("SendPingReply");
     Packet sp = new Packet(Packet.Opcodes.Ping);
     _Client.SendPacket(server,sp);
 }
        public void WaitReceive(object oserver)
        {
            Server server = (Server)oserver;
            byte[] buf = new byte[Server.MAX_BUFF];
            while (server.IsConnected)
            {
                int length=0;
                try
                {
                    length = _Socket.Receive(buf);
                }
                catch (Exception ex)
                {
                    Log.Warning("Server closed connection.");
                    Disconnect(server);
                    return;
                }
                //Log.Debug("Data receive: "+length);
                //length = recv(server->_Socket, buf, Server.MAX_BUFF, 0);
                //Log.Debug("DATA RECV");
                if(length <= 0)
                {
                    Log.Debug("data length 0? Server Closed Connection?");
                    Disconnect(server);
                    return;
                    //for (int i=0;i<Server.MAX_BUFF;i++) {buf[i] = 0;}
                    //Thread.Sleep(1);
                    //continue;
                }
                Packet pak = new Packet();
                pak.Length = BitConverter.ToUInt16(buf, 0);
                pak.Opcode = buf[2];
                for (int i = 0; i < pak.Length - pak.headerlength; i++) { pak.Data[i] = buf[i + pak.headerlength]; }
                pak.Length -= pak.headerlength;
                pak.Pos = 0;
                Thread t = new Thread(new ParameterizedThreadStart(PakProcessor.ProcessPacket));
                PacketProcessor.ProcessPacketParams args = new PacketProcessor.ProcessPacketParams();
                args.server = server;
                args.packet = pak;
                t.Start(args);
                server.LastPacketReceived = DateTime.Now;
                //PakProcessor.ProcessPacket(server,pak);

                for (int i = 0; i < Server.MAX_BUFF; i++) { buf[i] = 0; }
                Thread.Sleep(1);
            }
            Log.Debug("Server Disconnected");
        }
        public void SendPacket(Server server, Packet packet)
        {
            // just adds the packet data to clients send buffer
            if (packet == null) return;
            if (packet.Opcode == 0x00) return;
            //packet.SetLength();
            packet.Length += packet.headerlength;
            if (packet.Length <= 0) return;
            if (server.sbufpos + packet.Length >= Server.MAX_BUFF) return;
            while (server.sbuflock) { Thread.Sleep(1); }
            server.sbuflock = true;

            byte[] bar = BitConverter.GetBytes(packet.Length);
            server.sendbuf[server.sbufpos + 0] = bar[0];
            server.sendbuf[server.sbufpos + 1] = bar[1];
            server.sendbuf[server.sbufpos + 2] = packet.Opcode;
            for (int i = 0; i < packet.Length-packet.headerlength; i++) { server.sendbuf[server.sbufpos + packet.headerlength + i] = packet.Data[i]; }

            server.sbufpos += packet.Length;
            server.sbuflock = false;
            packet.Length -= packet.headerlength;

            InternalEvents.FireOnPacketSent(this, new OnPacketSentEventArgs(server, this, packet));
        }
 public OnPacketSentEventArgs(Server server, Client client, Packet pak)
 {
     _Server = server;
     _Client = client;
     Pak = pak;
 }