예제 #1
0
        void TryToConnect()
        {
            if (MyState != State.Connecting)
            {
                return;
            }

            Safely(() => {
                Connect();
                MyState = State.Connected;
                SyncContext.Current.Post(() => IsConnectedChanged.Fire(true));
                AfterConnect();
            });
        }
예제 #2
0
        void Heartbeat()
        {
            if (MyState == State.Disposed)
            {
                return;
            }

            HeartbeatCookie = PumpTimer.DoLater(1000, Heartbeat);
            if (Connection == null || !Connection.IsOpen)
            {
                MyState = State.Connecting;
                SyncContext.Current.Post(() => IsConnectedChanged.Fire(false));
                TryToConnect();
            }
        }
예제 #3
0
 protected void ConnectionBroke()
 {
     CleanupRabbit();
     MyState = State.Connecting;
     SyncContext.Current.Post(() => IsConnectedChanged.Fire(false));
 }
예제 #4
0
 public AsyncWorkQueueConsumer(WorkQueueInfo wq)
 {
     Consumer = new AsyncConsumer(new ConsumerInfo(wq.Host, wq.Name, true, wq.IsPersistent, 1), msg => Received.Fire(msg));
     Consumer.IsConnectedChanged += x => IsConnectedChanged.Fire(x);
 }