Esempio n. 1
0
        public void Regist(string Id)
        {
            IPushCallback callbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>();

            //添加到管理列表中
            ChannelManager.Instance.Add(callbackChannel, Id);
        }
Esempio n. 2
0
        public void StartPushingStream()
        {
            log.Add("StartPushingStream");
            IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>();

            Task.Factory.StartNew(PushStream, pushCallbackChannel, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
        }
Esempio n. 3
0
        public void UnRegist(string Id)
        {
            IPushCallback callbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>();

            //从管理列表中移除
            ChannelManager.Instance.Remove(callbackChannel, Id);
        }
Esempio n. 4
0
        public void StartPushingStreamLongWait()
        {
            log.Add("StartPushingStream");
            IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>();

            ThreadPool.QueueUserWorkItem(new WaitCallback(PushStreamLongwait), pushCallbackChannel);
        }
Esempio n. 5
0
        private void Instance_OnOparateChannel(object sender, ChannelEventArg e)
        {
            IPushCallback callback = sender as IPushCallback;

            switch (e.Type)
            {
            case OparateType.Add:
                lstChannel.Items.Add(e.Id);
                txtConsole.AppendText("订阅客户端:" + e.Id + "\r\n");
                _current++;
                lklblNum.Text = _current.ToString();
                break;

            case OparateType.Remove:
                lstChannel.Items.Remove(e.Id);
                txtConsole.AppendText("退订客户端:" + e.Id + "\r\n");
                _current--;
                lklblNum.Text = _current.ToString();
                break;

            case OparateType.Notify:
                txtConsole.AppendText("发布给客户端:" + e.Id + "消息\r\n");
                break;

            default:
                break;
            }
        }
Esempio n. 6
0
        public void StartPushingData()
        {
            _log.Add("StartPushingData");
            _continuePushingData = true;
            IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>();

            Task.Factory.StartNew(PushData, pushCallbackChannel, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
        }
Esempio n. 7
0
        public void StartPushingData()
        {
            log.Add("StartPushingData");
            continuePushingData = true;
            IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>();

            ThreadPool.QueueUserWorkItem(new WaitCallback(PushData), pushCallbackChannel);
        }
Esempio n. 8
0
        void PushStream(object state)
        {
            IPushCallback pushCallbackChannel = state as IPushCallback;

            localStream = new FlowControlledStream();
            localStream.ReadThrottle = TimeSpan.FromMilliseconds(800);

            pushCallbackChannel.ReceiveStream(localStream);
        }
Esempio n. 9
0
        void PushData(object state)
        {
            IPushCallback pushCallbackChannel = state as IPushCallback;

            do
            {
                pushCallbackChannel.ReceiveData(CreateInterestingString(rand.Next(4, 256)));
            }while (continuePushingData);

            pushCallbackChannel.ReceiveData(LastMessage);
        }
Esempio n. 10
0
        void PushStreamLongwait(object state)
        {
            IPushCallback pushCallbackChannel = state as IPushCallback;

            localStream = new FlowControlledStream();
            localStream.ReadThrottle   = TimeSpan.FromMilliseconds(3000);
            localStream.StreamDuration = TimeSpan.FromSeconds(2);

            try
            {
                pushCallbackChannel.ReceiveStreamWithException(localStream);
            }
            catch (Exception ex)
            {
                Console.WriteLine(String.Format("Server got the following exception: {0}", ex));
                this.exceptionstring = ex.GetType().Name;
            }
        }
Esempio n. 11
0
 /// <summary>
 /// 从通道列表中移除对一个通道的管理
 /// </summary>
 /// <param name="callbackChannel"></param>
 public void Remove(IPushCallback callbackChannel, string Id)
 {
     if (!callbackChannelList.ContainsKey(Id))
     {
         Console.WriteLine("不存在待移除通道");
     }
     else
     {
         lock (SyncObj)
         {
             callbackChannelList.Remove(Id);
             if (OnOparateChannel != null)
             {
                 OnOparateChannel(callbackChannel, new ChannelEventArg(OparateType.Remove, Id));
             }
             // Console.WriteLine("移除了一个通道");
         }
     }
 }
Esempio n. 12
0
 /// <summary>
 /// 将回调通道加入到通道列表中进行管理
 /// </summary>
 /// <param name="callbackChannel"></param>
 public void Add(IPushCallback callbackChannel, string Id)
 {
     if (callbackChannelList.ContainsKey(Id))
     {
         Console.WriteLine("已存在重复通道");
     }
     else
     {
         lock (SyncObj)
         {
             callbackChannelList.Add(Id, callbackChannel);
             if (OnOparateChannel != null)
             {
                 OnOparateChannel(callbackChannel, new ChannelEventArg(OparateType.Add, Id));
             }
             //Console.WriteLine("添加了新的通道");
         }
     }
 }
Esempio n. 13
0
        public void GetLog()
        {
            IPushCallback pushCallbackChannel = OperationContext.Current.GetCallbackChannel <IPushCallback>();

            pushCallbackChannel.ReceiveLog(log);
        }