private static bool checkReadyEx() { if (isValid()) { if ((mLastConnectedTimestamp != 0.0) && (SessionPack.getNow() > (mLastConnectedTimestamp + 30000.0))) { EventCenter.postEvent(EventConst.ON_NET_LONGCONN_KEEPALIVE, null, null); mLastConnectedTimestamp = 0.0; } return(true); } if (mReconnectLeft <= 0) { if (mReconnectLeft == 0) { Log.e("Network", "no chance to try connect."); mReconnectLeft = -1; } return(false); } double num = SessionPack.getNow(); double num2 = mLastConnTimestamp + getSleepTime(mReconnectLeft); if ((mReconnectLeft == 3) || (num >= num2)) { mLastConnTimestamp = num; mReconnectLeft--; Connector.setConnectorStatus(ConntectorStatus.Connecting); mSocketClient = new SocketClient(); HostService.HostInfo info = HostService.mLongConnHosts.getAvailableHost(); SocketError error = mSocketClient.Connect(info.mHost, info.mPort); if (error == ((SocketError)((int)SocketError.Success))) { Log.i("Network", "connect success."); mLastConnectedTimestamp = num; //NetworkDeviceWatcher.onConnected(); mReconnectLeft = 2; mFirstKeepAlivePointAfterConnected = restartKeepAlivePoint(0xbb8); mConnFailedCount = 0; Connector.setConnectorStatus(ConntectorStatus.Connected); return(true); } if (error == ((SocketError)((int)SocketError.HostNotFound))) { HostService.setDNSFailed(); } Log.e("Network", "connect error:" + error.ToString()); close(); mConnFailedCount++; if (mConnFailedCount >= 3) { Log.i("Network", "longconnect is not available as connect failed(3/3)."); setAvailable(false); mConnFailedCount = 0; } HostService.mLongConnHosts.onCurrentHostFailed(); Connector.setConnectorStatus(ConntectorStatus.Disconnect); } return(false); }
public static object onParserBindOpMobileForReg(SessionPack sessionPack) { BindOpMobileResponse response = BindOpMobileResponse.ParseFrom(sessionPack.mResponseBuffer); if (response == null) { Log.e("Network", "BindOpMobileResponse parse failed. "); return(null); } if (response.BaseResponse.Ret == -301) { Log.i("Network", "Need to redirect IDC for BindOpMobileForReg..."); HostService.updateAuthIDCHost(response.NewHostList); HostService.updateAuthBuiltinIP(response.BuiltinIPList); Connector.close(); } return(response); }
public static void run() { int millisecondsTimeout = 100; HostService.init(); //NetworkDeviceWatcher.initWatcher(); while (mRunStatus != 0) { idleEvent.WaitOne(millisecondsTimeout); if (mRunStatus == 1) { //Sender.getInstance().checkSender(); SessionPackMgr.checkPackTimeout(); SessionPackMgr.clearCompletedOrCancel(); SessionPackMgr.checkSendTimeout(); Connector.checkReady(); Sender.getInstance().handler(); Receiver.getInstance().handler(); millisecondsTimeout = getIdleTime(); } } mThread = null; mThreadStart = null; }
public static object onParserNewAuthPack(SessionPack sessionPack) { NewAuthResponse response = NewAuthResponse.ParseFrom(sessionPack.mResponseBuffer); if (response == null) { Log.e("Network", "auth parse failed. "); return(null); } int uin = (int)response.Uin; RetConst ret = (RetConst)response.BaseResponse.Ret; Log.d("Network", "auth parsed success. "); if ((uin != 0) && (((ret == RetConst.MM_OK) || (ret == RetConst.MM_ERR_CRITICALUPDATE)) || (ret == RetConst.MM_ERR_RECOMMENDEDUPDATE))) { Log.i("Network", "auth PASS, uin= " + uin); HostService.updateAuthBuiltinIP(response.BuiltinIPList); SessionPackMgr.setSessionKey(response.SessionKey.ToByteArray()); SessionPackMgr.getAccount().AutoAuthKey = response.AutoAuthTicket; SessionPackMgr.getAccount().setUin(uin); SessionPackMgr.getAccount().Nickname = response.NickName.String; //SessionPackMgr.getAccount().Headimg=response.WTLoginRspBuff SessionPackMgr.setAuthStatus(2); return(response); } Log.e("Network", "auth Failed,ret = " + ret); switch (ret) { case RetConst.MM_ERR_NEEDREG: Log.i("Network", "auth result: need register"); SessionPackMgr.mAuthTicket1 = response.Ticket; Connector.close(); return(response); case RetConst.MM_ERR_IDC_REDIRECT: Log.i("Network", "Need to redirect IDC for auth ..."); HostService.updateAuthIDCHost(response.NewHostList); HostService.updateAuthBuiltinIP(response.BuiltinIPList); Connector.close(); return(response); case RetConst.MM_ERR_QQ_OK_NEED_MOBILE: SessionPackMgr.setSessionKey(null); return(response); default: SessionPackMgr.setSessionKey(null); SessionPackMgr.getAccount().reset(); switch (ret) { case RetConst.MM_ERR_RECOMMENDEDUPDATE: Log.e("Network", "Auth Failed: MM_ERR_RECOMMENDEDUPDATE "); goto Label_022B; case RetConst.MM_ERR_CRITICALUPDATE: Log.e("Network", "Auth Failed: MM_ERR_CRITICALUPDATE "); goto Label_022B; case RetConst.MM_ERR_AUTH_ANOTHERPLACE: Log.e("Network", "Auth Failed: MM_ERR_AUTH_ANOTHERPLACE "); mKickMessage = response.KickResponse; Sender.getInstance().closeSender(); goto Label_022B; case RetConst.MM_ERR_NEED_VERIFY: Log.e("Network", "Auth Failed: MM_ERR_NEED_VERIFY "); goto Label_022B; case RetConst.MM_ERR_NOUSER: Log.e("Network", "Auth Failed: MM_ERR_NOUSER "); goto Label_022B; case RetConst.MM_ERR_PASSWORD: Log.e("Network", "Auth Failed: MM_ERR_PASSWORD "); goto Label_022B; } break; } Label_022B: Connector.close(); return(response); }