Ejemplo n.º 1
0
        public override void ProcessPayload(Interfaces.IClient Client, Plugin.IPlugin plugin = null)
        {
            lock (Client.Connection.InitializedClasses)
            {
                if (Client.Connection.InitializedClasses.ContainsKey(SharedClassId))
                {
                    SharedClass initClass = Client.Connection.InitializedClasses[SharedClassId];
                    Client.Connection.InitializedClasses[SharedClassId].IsDisposed = true;

                    SharedClass localSharedClass = null;
                    lock (Client.Connection.SharedClasses)
                    {
                        if (Client.Connection.SharedClasses.TryGetValue(initClass.SharedName, out localSharedClass))
                        {
                            localSharedClass.SharedInitializeCounter--;
                        }
                    }

                    Client.Connection.InitializedClasses[SharedClassId] = null;
                    Client.Connection.InitializedClasses.Remove(SharedClassId);
                }
                else
                {
                    //strange client behavior
                    Client.Disconnect();
                }
            }
        }
Ejemplo n.º 2
0
 private void Disconnect()
 {
     if (client == null)
     {
         return;
     }
     foreach (Action <object[]> act in reads)
     {
         client.Read -= act;
     }
     client.RemoveItself();
     client = null;
 }
        public override void ProcessPayload(Interfaces.IClient client, Plugin.IPlugin plugin = null)
        {
            SSPClient Client = client as SSPClient;

            if (Client.PeerSide == PeerSide.Client)
            {
                if (Client.SyncNextRandomId != null)
                {
                    Client.SyncNextRandomId.Value = this;
                    Client.SyncNextRandomId.Pulse();
                }
            }
            else if (Client.PeerSide == PeerSide.Server)
            {
                RandomId = Client.Server.Random.NextDecimal();
                client.Connection.SendMessage(this, PacketId.RequestMessages);
            }
            base.ProcessPayload(client, plugin);
        }
Ejemplo n.º 4
0
 void CreateClient()
 {
     try
     {
         if (client != null)
         {
             if (client.Url.Equals(url) & client.Type.Equals(type))
             {
                 return;
             }
         }
         Disconnect();
         if (type.Equals(RemoteType.Ipc))
         {
             client = new IPCClient.Subscriber(url);
         }
         else if (type.Equals(RemoteType.Tcp))
         {
             client = new TCPClient.Subscriber(url);
         }
         else
         {
             client = new HttpClient.Subscriber(url);
         }
         foreach (Action <object[]> read in reads)
         {
             client.Read += read;
         }
         str = client.Register();
         if (str != null)
         {
             types = str.StringToTypes();
         }
     }
     catch (Exception exception)
     {
         isEnanled = false;
         exception.ShowError();
         Disconnect();
         client = null;
     }
 }
 public override void ProcessPayload(Interfaces.IClient client, Plugin.IPlugin plugin = null)
 {
 }