Exemplo n.º 1
0
 /// <summary>
 /// Funkcja dzialajaca na rzecz watku, pobiera i wysla pakiety z kolejki
 /// </summary>
 private void go()
 {
     try
     {
         IGaduPacket packet;                               // pakiet do wyslania
         while (true)                                      // do poki kolejka nie jest pusa
         {
             if (!tcpClient.Connected || queue.Count == 0) // czy gniazdo jest podlaczone i czy mamy jakies pakiety do wyslania
             {
                 Thread.Sleep(sleepTime);                  // jezeli nie to czekaj az bedzie podlaczone
                 continue;
             }
             packet = (IGaduPacket)queue.Dequeue();      // pobierz pakiet z kolejki
             packet.write(tcpClient.GetStream());        // wyslij pakiet
             if (OnPacketSent != null)
             {
                 OnPacketSent.BeginInvoke(packet, null, null);
             }
         }
     }
     catch (ThreadAbortException)
     {                   // nie zadreczajmy uzytkownika tym wyjatkiem, w 99% powodowany przez Thread.Abort()
     }
     catch (Exception e) // jezeli cokolwiek poszlo nie tak
     {
         if (Gadu.GaduCriticalError() == false)
         {
             throw new GaduRecieverException(e.Message);
         }
     }
 }
Exemplo n.º 2
0
 public static void Raise(this OnPacketSent @event, object sender, ServerPacketEventArgs e)
 {
     if (@event != null)
     {
         @event(sender, e);
     }
 }
 public void SendObjectToClients(object package)
 {
     foreach (var c in Connections.ToList())
     {
         c.SendObject(package).Wait();
         var e3 = BuildEvent(c, c, package);
         OnPacketSent?.Invoke(this, e3);
     }
 }
Exemplo n.º 4
0
 public void SendObjectToClients(object package)
 {
     foreach (var c in Connections.ToList())
     {
         c.SendObject(package).Wait();
         var testPing = new PingPacketEvent(c, c, package);
         OnPacketSent?.Invoke(this, testPing);
     }
 }
        private void MonitorStreams()
        {
            while (IsRunning)
            {
                foreach (var client in Connections.ToList())
                {
                    if (!client.IsSocketConnected())
                    {
                        var e5 = BuildEvent(client, null, String.Empty);
                        Connections.Remove(client);
                        OnConnectionRemoved?.Invoke(this, e5);
                        continue;
                    }

                    if (client.Socket.Available != 0)
                    {
                        var readObject = ReadObject(client.Socket);
                        var e1         = BuildEvent(client, null, readObject);
                        OnPacketReceived?.Invoke(this, e1);

                        if (readObject is PingPacket ping)
                        {
                            client.SendObject(ping).Wait();
                            continue;
                        }

                        if (readObject is PersonalPacket pp)
                        {
                            var destination = Connections.FirstOrDefault(c => c.ClientId.ToString() == pp.GuidId);
                            var e4          = BuildEvent(client, destination, pp);
                            OnPersonalPacketReceived?.Invoke(this, e4);

                            if (destination != null)
                            {
                                destination.SendObject(pp).Wait();
                                var e2 = BuildEvent(client, destination, pp);
                                OnPersonalPacketSent?.Invoke(this, e2);
                            }
                        }
                        else
                        {
                            foreach (var c in Connections.ToList())
                            {
                                c.SendObject(readObject).Wait();
                                var e3 = BuildEvent(client, c, readObject);
                                OnPacketSent?.Invoke(this, e3);
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
 private void SendCallback(IAsyncResult asyncResult)
 {
     stream.EndWrite(asyncResult);
     OnPacketSent?.Invoke((Packet)asyncResult.AsyncState);
 }
Exemplo n.º 7
0
 internal static void RunPacketSent(ref CSteamID steamID, ref ESteamPacket type, ref byte[] packet, ref int size, ref int channel, ref bool cancel) => OnPacketSent?.Invoke(ref steamID, ref type, ref packet, ref size, ref channel, ref cancel);
Exemplo n.º 8
0
 /// <summary>
 /// Async callback for packet sending
 /// </summary>
 /// <param name="asyncResult"></param>
 private void SendCallback(IAsyncResult asyncResult)
 {
     // End packet sending to end-point
     sendingClient.EndSend(asyncResult);
     OnPacketSent?.Invoke((Packet)asyncResult.AsyncState);
 }