コード例 #1
0
ファイル: BufferEvent.cs プロジェクト: deapsquatter/oars
        public BufferEvent(EventBase eventBase, IntPtr socket, int timeout)
        {
            var options = (int)(BufferEventOptions.CloseOnFree | BufferEventOptions.DeferCallbacks);
            bev = bufferevent_socket_new(eventBase.Handle, socket, options);
            var t = timeval.FromTimeSpan(TimeSpan.FromMilliseconds(timeout));
            bufferevent_set_timeouts(bev, ref t, ref t);
            //Console.WriteLine("bufferevent_socket_new returned " + bev.ToInt32());

            // none of these can throw exceptions.
            readdel = new bufferevent_data_cb(ReadCallbackInternal);
            var readCb = Marshal.GetFunctionPointerForDelegate(readdel);
            writedel = new bufferevent_data_cb(WriteCallbackInternal);
            var writeCb = Marshal.GetFunctionPointerForDelegate(writedel);
            eventdel = new bufferevent_event_cb(EventCallbackInternal);
            var eventCb = Marshal.GetFunctionPointerForDelegate(eventdel);

            bufferevent_setcb(bev, readCb, writeCb, eventCb, IntPtr.Zero);
        }
コード例 #2
0
ファイル: BufferEvent.cs プロジェクト: deapsquatter/oars
 void Dispose(bool disposing)
 {
     if (!disposed)
     {
         disposed = true;
         if (disposing)
         {
             if (input != null)
                 input.Dispose();
             if (output != null)
                 output.Dispose();
             readdel = null;
             writedel = null;
             eventdel = null;
         }
         bufferevent_free(bev);
     }
 }