示例#1
0
        public int Main( string[] args )
        {

            TimerWatcher tw = new TimerWatcher( TimeSpan.FromSeconds( 1 ), TimeSpan.FromSeconds( 1 ), (LibEvLoop)IOLoop.Instance.EventLoop,
                                               ( l, w, et ) => Console.WriteLine( "{0}: Beep", DateTime.Now ));
            tw.Start();


            return 0;

        }
示例#2
0
        public int ScheduleTimer( TimeSpan after, Action<int> onTimer )
        {
            if( freeList.Count == 0 ) growWatchers( watchers.Length * 2 );

            int ret = freeList.Dequeue();

            TimerWatcher tw = new TimerWatcher( after, TimeSpan.MaxValue, (LibEvLoop)loop.EventLoop, ( l, w, et ) =>
            {
                w.Stop();
                watchers[ret] = null;
                freeList.Enqueue( ret );
                onTimer( ret );
            } );
            watchers[ret] = tw;
            tw.Start();
            return ret;
        }
示例#3
0
        public void SetHandle(IntPtr handle)
        {
            if (this.handle != IntPtr.Zero && this.handle != handle)
                Close ();

            this.handle = handle;
            read_watcher = new IOWatcher (handle, EventTypes.Read, ioloop.EventLoop, HandleIOReadEvent);
            write_watcher = new IOWatcher (handle, EventTypes.Write, ioloop.EventLoop, HandleIOWriteEvent);
            timeout_watcher = new TimerWatcher (TimeOut, TimeOut, ioloop.EventLoop, HandleTimeoutEvent);

            timeout_watcher.Start ();
        }
示例#4
0
文件: IOLoop.cs 项目: koush/manos
 public void AddTimeout(Timeout timeout)
 {
     TimerWatcher t = new TimerWatcher (timeout.begin, timeout.span, evloop, HandleTimeout);
     t.UserData = timeout;
     t.Start ();
 }
示例#5
0
        /// <summary>
        /// true if all is well, false if timed out
        /// </summary>
        public void OnComplete( Action<bool> whenComplete, TimeSpan timeOut )
        {
            if( WorkPending == 0 ) whenComplete( true );
            else
            {
                timedWhenComplete = whenComplete;

                watcher = new TimerWatcher( timeOut, TimeSpan.MaxValue, (LibEvLoop)loop.EventLoop, ( l, w, et ) =>
                {
                    w.Stop();
                    timedWhenComplete = null;
                    whenComplete( false );
                });
                watcher.Start();
            }
        }
示例#6
0
        public int ScheduleRepeatingTimer( TimeSpan interval, Action<int> onTimer )
        {
            if( freeList.Count == 0 ) growWatchers( watchers.Length * 2 );

            int ret = freeList.Dequeue();

            TimerWatcher tw = new TimerWatcher( interval, interval, (LibEvLoop)loop.EventLoop, ( l, w, et ) => onTimer( ret ));

            watchers[ret] = tw;
            tw.Start();
            return ret;
        }