コード例 #1
0
ファイル: TCPSession.cs プロジェクト: Paul1nh0/Singularity
        private void StartPersistTimer()
        {
            Dispatcher.Callback fun = new Dispatcher.Callback(OnPersistTimeout);
            ulong expiryTime        = (ulong)DateTime.UtcNow.Ticks + (PersistTimeout * DateTime.TicksPerSecond);

            persistTimer = Core.Instance().TheDispatcher.AddCallback(fun, null, expiryTime);
        }
コード例 #2
0
ファイル: TCPSession.cs プロジェクト: Paul1nh0/Singularity
        internal void StartConnectTimer()
        {
            ulong timeout;

            if (passiveSession != null)
            {
                timeout = PassiveConnectTimeout;
            }
            else
            {
                timeout = ActiveConnectTimeout;
            }

            Dispatcher.Callback fun = new Dispatcher.Callback(OnConnectTimeout);
            ulong expiryTime        = (ulong)DateTime.UtcNow.Ticks + (timeout * DateTime.TicksPerSecond);

            connectTimer = Core.Instance().TheDispatcher.AddCallback(fun, null, expiryTime);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: notflan/Sync
        static async Task server()
        {
            TcpListener listener   = new TcpListener(IPAddress.Loopback, 20202);
            Dispatcher  dispatcher = new Dispatcher();

            listener.Start();
            mre.Set();
            Console.WriteLine("Server up");
            await Dispatcher.Go(() =>
            {
                bool alive = true;
                while (alive)
                {
                    Client client;
                    string id = uuid();
                    try
                    {
                        client =// Client.Create(new NetworkStream(listener.AcceptSocket(), true));
                                 new Client(new NetworkStream(listener.AcceptSocket(), true));
                        Dispatcher.Go(client.Hook);
                        client.WaitOnInit();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Exception on accept: " + e.Message);
                        continue;
                    }
                    client.OnLongStreamReadComplete += (t) =>
                    {
                        byte[] bytes = (t.Backing as MemoryStream).ToArray();
                        Console.WriteLine("LS: " + BitConverter.ToInt64(bytes, 0));
                        //t.Backing.Dispose();
                        //t.Backing = null;
                    };
                    Console.WriteLine("Server accepted client " + id);

                    client.SignalHandler.Hook(Client.SignalMessageReceived, (msg) =>
                    {
                        Console.WriteLine("Received message: " + msg.ToString());
                    });

                    client.OnClose += () =>
                    {
                        Console.WriteLine("Client " + id + " closing");
                    };


                    Dispatcher.Callback kill     = null;
                    dispatcher.Hook("kill", kill = () =>
                    {
                        if (client.Alive)
                        {
                            client.Close();
                            Console.WriteLine("Client " + id + " killed");
                        }
                        dispatcher.Unhook("kill", kill);
                    });


                    while (client.Alive)
                    {
                        try
                        {
                            var msg = client.In.Receive();
                            if (client.Alive)
                            {
                                if (msg.Is("chat", typeof(string)))
                                {
                                    Console.WriteLine("From " + id + ": " + msg.Get <string>("chat"));
                                }
                                if (msg.Is("adc"))
                                {
                                    var adc = msg.Get("adc");
                                    Console.WriteLine(adc.GetType().Name);
                                    if (adc is ADCString)
                                    {
                                        Console.WriteLine((adc as ADCString).String);
                                    }
                                }
                                if (msg.Is("_close"))
                                {
                                    Console.WriteLine(id + ": Server stoping");
                                    alive = false;
                                    client.Close();
                                    listener.Stop();
                                }
                                msg.Dispose();
                            }
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
                dispatcher.SignalSync("kill");
                Console.WriteLine("Server: kill answered");
            });
        }
コード例 #4
0
 // Use this for initialization
 void Start()
 {
     _text       = GetComponent <Text> ();
     cntCallback = new Dispatcher.Callback(ShowCount);
     NativeWrapper.StartThread(cntCallback);
 }
コード例 #5
0
 public static extern bool StartThread(Dispatcher.Callback cb);