示例#1
0
 private void TrySendBrokerRequest()
 {
     if (this.brokerUniqueSocketId > 0L)
     {
         while (this.brokerPendingRequests.get_Count() > 0)
         {
             Logger.DEBUG(string.Empty);
             PendingRequest pendingRequest = this.brokerPendingRequests.Dequeue() as PendingRequest;
             this.netFrame.SendPacket(this.brokerUniqueSocketId, pendingRequest.data);
         }
     }
     else
     {
         int num = Utils.NowSeconds();
         while (this.brokerPendingRequests.get_Count() > 0)
         {
             PendingRequest pendingRequest2 = this.brokerPendingRequests.Peek() as PendingRequest;
             if (num <= pendingRequest2.createTime + 5)
             {
                 break;
             }
             Logger.WARN(string.Empty);
             this.brokerPendingRequests.Dequeue();
         }
     }
 }
示例#2
0
        public static void LogCallback(int level, [MarshalAs(20)] string logMsg)
        {
            try
            {
                switch (level)
                {
                case 0:
                    Logger.DEBUG(logMsg);
                    break;

                case 1:
                    Logger.INFO(logMsg);
                    break;

                case 2:
                    Logger.WARN(logMsg);
                    break;

                case 3:
                    Logger.ERROR(logMsg);
                    break;
                }
            }
            catch (Exception var_0_4E)
            {
            }
        }
        private void ProcessBrokerHeartbeat()
        {
            int num = Utils.NowSeconds();

            if (this.lastRecvBrokerHeartbeatRspTime >= this.lastSendBrokerHeartbeatReqTime)
            {
                if (num >= this.lastSendBrokerHeartbeatReqTime + NetLogic.brokerHeartbeatIntervalInSecs)
                {
                    this.SendHeartbeatToBroker();
                }
            }
            else if (num >= this.lastSendBrokerHeartbeatReqTime + NetLogic.brokerHeartbeatTimeoutInSecs)
            {
                if (this.brokerHeartbeatTimeoutRetryCnt < NetLogic.maxBrokerHeartbeatTimeoutRetryCnt)
                {
                    Logger.WARN("Broker heartbeat is timeout, try again later, retryCnt=" + this.brokerHeartbeatTimeoutRetryCnt);
                    this.SendHeartbeatToBroker();
                    this.brokerHeartbeatTimeoutRetryCnt++;
                }
                else
                {
                    Logger.ERROR("Broker heartbeat is timeout, the connection to broker will be closed");
                    this.Close(this.brokerUniqueSocketId);
                    this.ResetBrokerHeartbeatVars();
                }
            }
        }
示例#4
0
 public static void AddCommand(Command cmd)
 {
     try
     {
         if (cmd is AddSocketCommand)
         {
             AddSocketCommand addSocketCommand  = cmd as AddSocketCommand;
             long             theUniqueSocketId = addSocketCommand.theUniqueSocketId;
             TCPSocketContext tCPSocketContext  = new TCPSocketContext(addSocketCommand.theUniqueSocketId, addSocketCommand.theHandler);
             if (!NetLib.dictSocketContext.ContainsKey(theUniqueSocketId))
             {
                 Logger.DEBUG(theUniqueSocketId.ToString() + " added");
                 NetLib.dictSocketContext.Add(theUniqueSocketId, tCPSocketContext);
             }
             else
             {
                 TCPSocketContext tCPSocketContext2 = NetLib.dictSocketContext.get_Item(theUniqueSocketId);
                 Logger.ERROR("NetThread::ProcessCommands socket handle conflict " + tCPSocketContext.GetUniqueSocketId().ToString() + " VS " + tCPSocketContext2.GetUniqueSocketId().ToString());
             }
         }
         else if (cmd is SendPacketCommand)
         {
             SendPacketCommand sendPacketCommand = cmd as SendPacketCommand;
             long theUniqueSocketId2             = sendPacketCommand.theUniqueSocketId;
             if (NetLib.dictSocketContext.ContainsKey(theUniqueSocketId2))
             {
                 TCPSocketContext tCPSocketContext3 = NetLib.dictSocketContext.get_Item(theUniqueSocketId2);
                 Packet           packet            = new Packet();
                 packet.theCreateTimeMS = sendPacketCommand.theCreateTimeMS;
                 packet.theContent      = (sendPacketCommand.theContent.Clone() as byte[]);
                 tCPSocketContext3.Enqueue(packet);
                 NetLib.pendingPacketsLength += (long)packet.theContent.Length;
             }
         }
         else
         {
             CloseSocketCommand closeSocketCommand = cmd as CloseSocketCommand;
             long theUniqueSocketId3 = closeSocketCommand.theUniqueSocketId;
             if (NetLib.dictSocketContext.ContainsKey(theUniqueSocketId3))
             {
                 TCPSocketContext tCPSocketContext4 = NetLib.dictSocketContext.get_Item(theUniqueSocketId3);
                 Logger.DEBUG(theUniqueSocketId3.ToString() + " removed");
                 int num = 0;
                 tCPSocketContext4.HandleClose(out num);
                 NetLib.pendingPacketsLength -= (long)num;
                 NetLib.dictSocketContext.Remove(theUniqueSocketId3);
                 NetLib.PandoraNet_Close(theUniqueSocketId3);
             }
             else
             {
                 Logger.WARN("uniqueSocketId=" + theUniqueSocketId3.ToString() + " alreay missing");
             }
         }
     }
     catch (Exception ex)
     {
         Logger.ERROR(ex.get_StackTrace());
     }
 }
示例#5
0
        private string GetLocationUrl(byte[] receivedData, int dataLen)
        {
            Logger.DEBUG(string.Empty);
            int num  = -1;
            int num2 = -1;
            int num3 = -1;

            for (int i = 0; i < dataLen - DownloadHandler.redirectionField.Length + 1; i++)
            {
                bool flag = true;
                for (int j = 0; j < DownloadHandler.redirectionField.Length; j++)
                {
                    if (receivedData[i + j] != DownloadHandler.redirectionField[j])
                    {
                        flag = false;
                        break;
                    }
                }
                if (flag)
                {
                    num = i;
                    break;
                }
            }
            if (num < 0)
            {
                Logger.WARN(string.Empty);
                return(string.Empty);
            }
            for (int k = num + DownloadHandler.redirectionField.Length; k < dataLen; k++)
            {
                if (receivedData[k] != 58 && receivedData[k] != 32 && num2 < 0)
                {
                    num2 = k;
                }
                if (num2 >= 0 && receivedData[k] == 13)
                {
                    num3 = k;
                    break;
                }
            }
            if (num2 < 0 || num3 < 0 || num2 >= num3)
            {
                Logger.ERROR(string.Empty);
                return(string.Empty);
            }
            string @string = Encoding.get_UTF8().GetString(receivedData, num2, num3 - num2);

            Logger.DEBUG(@string);
            return(@string);
        }
示例#6
0
        public static string ReadCookie(string fileName)
        {
            string result;

            try
            {
                string text = Pandora.Instance.GetCookiePath() + "/" + fileName;
                result = File.ReadAllText(text);
            }
            catch (Exception ex)
            {
                Logger.WARN(ex.get_Message());
                result = string.Empty;
            }
            return(result);
        }
示例#7
0
        private int GetContentLength(byte[] receivedData, int dataLen)
        {
            Logger.DEBUG(string.Empty);
            int num  = -1;
            int num2 = -1;
            int num3 = -1;

            for (int i = 0; i < dataLen - DownloadHandler.contentLengthField.Length + 1; i++)
            {
                bool flag = true;
                for (int j = 0; j < DownloadHandler.contentLengthField.Length; j++)
                {
                    if (receivedData[i + j] != DownloadHandler.contentLengthField[j])
                    {
                        flag = false;
                        break;
                    }
                }
                if (flag)
                {
                    num = i;
                    break;
                }
            }
            if (num < 0)
            {
                Logger.WARN(string.Empty);
                return(-1);
            }
            for (int k = num + DownloadHandler.contentLengthField.Length; k < dataLen; k++)
            {
                if (receivedData[k] >= 48 && receivedData[k] <= 57)
                {
                    if (num2 < 0)
                    {
                        num2 = k;
                    }
                }
                else if (num2 >= 0 && num3 < 0)
                {
                    num3 = k;
                    break;
                }
            }
            if (num2 < 0 || num3 < 0 || num2 >= num3)
            {
                Logger.ERROR(string.Empty);
                return(-1);
            }
            int result;

            try
            {
                string @string = Encoding.get_UTF8().GetString(receivedData, num2, num3 - num2);
                int    num4    = Convert.ToInt32(@string);
                if (num4 > 0)
                {
                    result = num4;
                }
                else
                {
                    Logger.ERROR(string.Empty);
                    result = -1;
                }
            }
            catch (Exception ex)
            {
                Logger.ERROR(ex.get_StackTrace());
                result = -1;
            }
            return(result);
        }