Esempio n. 1
0
 public MessageStreamImpl(StreamMsgConsumeFactory msgConsumeFactory, HttpResponse response, ITopCometMessageListener msgListener, TopCometStreamImpl cometStreamImpl) : base(msgConsumeFactory, response)
 {
     this.logger = new DefaultTopLogger();
     this.pattern = "\\{\"packet\":\\{\"code\":(?<code>(\\d+))(,\"msg\":(?<msg>((.+))))?\\}\\}";
     this.objLock = new object();
     this.msgListener = msgListener;
     this.objLock = cometStreamImpl.GetControlLock();
     this.cometStreamImpl = cometStreamImpl;
 }
Esempio n. 2
0
 public AbstractStreamImpl(StreamMsgConsumeFactory msgConsumeFactory, HttpResponse response)
 {
     this.msgConsumeFactory = msgConsumeFactory;
     this.response = response;
 }
Esempio n. 3
0
 private void ControlThread(StreamMsgConsumeFactory msgConsumeFactory, ref bool bstop, Configuration conf, TopCometStreamRequest cometReq)
 {
     long ticks = 0L;
     while (!bstop)
     {
         if (this.allStop)
         {
             break;
         }
         try
         {
             if ("102".Equals(this.serverRespCode))
             {
                 this.logger.Info("Server is upgrade sleep " + conf.GetSleepTimeOfServerInUpgrade() + " seconds");
                 Thread.Sleep((int) (conf.GetSleepTimeOfServerInUpgrade() * 0x3e8));
                 this.StartConsumeThread(cometReq);
             }
             else if (("501".Equals(this.serverRespCode) || "103".Equals(this.serverRespCode)) || ("101".Equals(this.serverRespCode) || "500".Equals(this.serverRespCode)))
             {
                 this.StartConsumeThread(cometReq);
             }
             else
             {
                 if ("104".Equals(this.serverRespCode) || "105".Equals(this.serverRespCode))
                 {
                     if ((!"104".Equals(this.serverRespCode) || this.isReconnect) && !"105".Equals(this.serverRespCode))
                     {
                         goto Label_0117;
                     }
                 }
                 else
                 {
                     bstop = true;
                 }
                 break;
             }
         Label_0117:
             try
             {
                 Monitor.Enter(this.objLock);
                 ticks = DateTime.Now.Ticks;
                 Monitor.Wait(this.objLock, (int) (conf.GetHttpReconnectInterval() * 0x3e8));
                 if ((DateTime.Now.Ticks - ticks) >= ((conf.GetHttpReconnectInterval() * 0x3e8) * 0x2710))
                 {
                     this.serverRespCode = "500";
                     this.isReconnect = true;
                 }
             }
             catch (Exception exception)
             {
                 this.logger.Error(exception.Message);
             }
             finally
             {
                 Monitor.Exit(this.objLock);
             }
             continue;
         }
         catch (Exception exception2)
         {
             this.logger.Error("Occur some error,stop the stream consume" + exception2.Message);
             bstop = true;
             try
             {
                 Monitor.Enter(this.objLock);
                 Monitor.PulseAll(this.objLock);
             }
             finally
             {
                 Monitor.Exit(this.objLock);
             }
             continue;
         }
     }
     if (this.currentStreamImpl != null)
     {
         try
         {
             this.currentStreamImpl.Close();
         }
         catch (Exception)
         {
         }
     }
     this.logger.Info("Stop stream consume");
 }
Esempio n. 4
0
 public void Start()
 {
     if (this.cometMessageListener == null)
     {
         throw new Exception("Comet message listener must not null");
     }
     List<TopCometStreamRequest> connectReqParam = this.conf.GetConnectReqParam();
     this.msgConsumeFactory = new StreamMsgConsumeFactory(this.conf.GetMinThreads(), this.conf.GetMaxThreads(), this.conf.GetQueueSize());
     for (int i = 0; i < connectReqParam.Count; i++)
     {
         try
         {
             TopCometStreamRequest cometRequest = connectReqParam[i];
             if (cometRequest.GetConnectListener() == null)
             {
                 cometRequest.SetConnectListener(this.connectionListener);
             }
             if (cometRequest.GetMsgListener() == null)
             {
                 cometRequest.SetMsgListener(this.cometMessageListener);
             }
             Thread item = new Thread(delegate {
                 this.ControlThread(this.msgConsumeFactory, ref this.bstop, this.conf, cometRequest);
             }) {
                 Name = "stream-control-thread-connectid-" + cometRequest.GetConnectId()
             };
             item.Start();
             this.controlThreads.Add(item);
         }
         catch (Exception)
         {
         }
     }
 }