Esempio n. 1
0
File: IoSink.cs Progetto: Kidify/L4p
        void IIoSink.PostIo(Ioop ioop)
        {
            ioop.Next = Todo.Post;
            dispatch_ioop(ioop);

            // validate queue counters (issue warnings)
        }
Esempio n. 2
0
File: IoSink.cs Progetto: Kidify/L4p
 private void accumulate_ioop_counters(Ioop ioop)
 {
     lock (_counters)
     {
         _counters.OpPosted += ioop.Counters.Posted;
         _counters.OpSent += ioop.Counters.Sent;
         _counters.OpCompleted += ioop.Counters.Completed;
         _counters.OpFailed += ioop.Counters.Failed;
     }
 }
Esempio n. 3
0
        void IFunnelsShop.PublishPost(Guid storeId, Post post)
        {
            var ioop = new Ioop();

            init_ioop(ioop);
            set_services(ioop);

            ioop.Io =
                shop => shop.PublishPost(storeId, post);

            post.Ioop = ioop;

            _sink.PostIo(ioop);
        }
Esempio n. 4
0
        void IIoWriter.Send(Ioop ioop)
        {
            ensure_connection(_info);

            try
            {
                ioop.Io(_shop);
            }
            catch (Exception ex)
            {
                _log.Warn(ex, "Failed to send io {0}; funnelId='{1}'", ioop.SequenceId, _info.FunnelId);
                close_connection(_info);
            }
        }
Esempio n. 5
0
File: IoSink.cs Progetto: Kidify/L4p
        private void dispatch_ioop(Ioop ioop)
        {
            var now = DateTime.Now;

            switch (ioop.Next)
            {
                case Todo.Post:
                    post_io(ioop, now);
                    break;

                case Todo.Send:
                    send_io(ioop, now);
                    break;

                case Todo.Complete:
                    complete_io(ioop, now);
                    break;
            }
        }
Esempio n. 6
0
File: IoSink.cs Progetto: Kidify/L4p
        private void complete_io(Ioop ioop, DateTime now)
        {
            ioop.Counters.Completed++;
            _que.Complete(ioop);

            accumulate_ioop_counters(ioop);
        }
Esempio n. 7
0
File: IoSink.cs Progetto: Kidify/L4p
        private void send_io(Ioop ioop, DateTime now)
        {
            ioop.Events.SentAt = now;
            ioop.Counters.Sent++;

            ioop.Next = Todo.Complete;
            ioop.OnIoComplete = () => dispatch_ioop(ioop);
            ioop.OnIoError = ex => handle_io_error(ioop, ex);
            ioop.Services.Out.Send(ioop);
        }
Esempio n. 8
0
 void IIoQueue.PushFront(Ioop ioop)
 {
     lock(_mutex) _impl.PushFront(ioop);
 }
Esempio n. 9
0
File: IoSink.cs Progetto: Kidify/L4p
        private void handle_io_error(Ioop ioop, Exception ex)
        {
            ioop.Counters.Failed++;
            ioop.IoError = ex;

            _log.Warn(ex, "Failure in ioop {0}", ioop.SequenceId);

            ioop.Services.Out.CloseConnection();
        }
Esempio n. 10
0
 void IIoQueue.PushFront(Ioop ioop)
 {
     _que.AddFirst(ioop);
 }
Esempio n. 11
0
 void IIoQueue.Release(Ioop ioop)
 {
 }
Esempio n. 12
0
 void IIoQueue.Push(Ioop ioop)
 {
     _que.AddLast(ioop);
 }
Esempio n. 13
0
 void IIoQueue.Complete(Ioop ioop)
 {
     _que.Remove(ioop);
 }
Esempio n. 14
0
 void IIoQueue.Release(Ioop ioop)
 {
     lock(_mutex) _impl.Release(ioop);
 }
Esempio n. 15
0
 private void init_ioop(Ioop ioop)
 {
 }
Esempio n. 16
0
File: IoSink.cs Progetto: Kidify/L4p
        private void post_io(Ioop ioop, DateTime now)
        {
            ioop.Events.PostedAt = now;
            ioop.Counters.Posted++;

            ioop.Next = Todo.Send;
            _que.Push(ioop);
        }
Esempio n. 17
0
 private void set_services(Ioop ioop)
 {
     ioop.Services.Que = _que;
     ioop.Services.Out = _writer;
     ioop.Services.In = _reader;
 }
Esempio n. 18
0
 void IIoQueue.Complete(Ioop ioop)
 {
     lock(_mutex) _impl.Complete(ioop);
 }