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); }
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); }
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"); }); }
// Use this for initialization void Start() { _text = GetComponent <Text> (); cntCallback = new Dispatcher.Callback(ShowCount); NativeWrapper.StartThread(cntCallback); }
public static extern bool StartThread(Dispatcher.Callback cb);