Esempio n. 1
0
BOOL CHttpDataParser::HandleTransferData( PBYTE pData,int nDataLen ) 
{

	if ( m_ceEncoding == CE_GZIP )
	{
		BYTE *pUnCompBuffer = NULL;
		ULONG  ulUnCompBufferLen = 0;
		BOOL bUnCompRes = UnCompressGzipData(&m_gzipstream,&pUnCompBuffer,&ulUnCompBufferLen,pData,nDataLen);
		ASSERT(bUnCompRes);

		if ( bUnCompRes && m_pCallback )
		{
			m_pCallback(m_pCallbackParam,pUnCompBuffer,ulUnCompBufferLen,FALSE);
		}

		free(pUnCompBuffer);

		return bUnCompRes;
	}

	if (m_pCallback)
	{
		m_pCallback(m_pCallbackParam,pData,nDataLen,FALSE);
	}

	return TRUE;;
}
Esempio n. 2
0
void CCommunity::DoPulse ( void )
{
    if ( m_ulStartTime )
    {
        eVerificationResult Status;

        // Poll the HTTP client
        CHTTPBuffer buffer;
        if ( m_HTTP.GetData ( buffer ) ) {

            char *szBuffer = buffer.GetData ();
            
            // Get the returned status
            Status = (eVerificationResult)(szBuffer[0] - 48);
            m_bLoggedIn = Status == VERIFY_ERROR_SUCCESS;
            m_ulStartTime = 0;

            // Change GUI
            CLocalGUI::GetSingleton ().GetMainMenu()->ChangeCommunityState ( m_bLoggedIn, m_strUsername );
            CLocalGUI::GetSingleton ().GetMainMenu()->GetSettingsWindow()->OnLoginStateChange ( m_bLoggedIn );

            // Perform callback
            if ( m_pCallback ) {
                m_pCallback ( m_bLoggedIn, szVerificationMessages[Status], m_pVerificationObject );
                m_pCallback = NULL;
                m_pVerificationObject = NULL;
            }
        }
        // Check for timeout
        else if ( ( CClientTime::GetTime () - m_ulStartTime ) > VERIFICATION_DELAY ) {
            g_pCore->ShowMessageBox ( "Error", "Services currently unavaliable", MB_BUTTON_OK | MB_ICON_ERROR );
            Logout ();
        }
    }
}
Esempio n. 3
0
void CMessageBox::Close(bool bReturn)
{
	if (!m_bVisible)
		return;
    m_bVisible = false;
	m_Dlg.Show(false);

	m_Dlg.FlushTextureStrings();

	if (m_eType == LTMB_EDIT)
		m_pData = (void*)m_pEdit->GetText();


	if (!m_bGameWasPaused)
        g_pGameClientShell->PauseGame(false);

	if (m_pCallback)
	{
		m_pCallback(bReturn, m_pData, m_pUserData);
	}

	// Play sound...
	g_pInterfaceMgr->RequestInterfaceSound(IS_SELECT);

	// Set the cursor to the appropriate state
	g_pInterfaceMgr->UpdateCursorState();
}
Esempio n. 4
0
void SensorManagerClass::EndReadings()
{
	for (int x = 0; x <= m_bLastSensor; x++)
	{
		(m_arrSensors[x])->EndReading();
	}

	// Invoke the callback if there is one
	if (m_pCallback) m_pCallback();
}
Esempio n. 5
0
//往打包文件中添加一个目录
bool KPackFileManager::AddFolderToPak(int nFullFolderFileNameLen)
{
    strcpy(m_FullFolderFileName + nFullFolderFileNameLen, "*.*");
    HANDLE			hFindHandle;	//win32查找文件句柄
    WIN32_FIND_DATA	FindData;
    hFindHandle = ::FindFirstFile(m_FullFolderFileName, &FindData);
    if (hFindHandle == INVALID_HANDLE_VALUE)
        return false;

    bool bOk = true;
    do
    {
        if (FindData.cFileName[0] == '.')
            continue;
        int nNewLen = (int)strlen(FindData.cFileName);
        memcpy(m_FullFolderFileName + nFullFolderFileNameLen, FindData.cFileName, nNewLen);
        nNewLen += nFullFolderFileNameLen;
		if (nNewLen - m_nElemFileRootPathNotEnderLen >= 128)
		{
			printf("Error: The length of [%S] is out of limit!\n", m_FullFolderFileName + m_nElemFileRootPathNotEnderLen);
		}
        if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            m_FullFolderFileName[nNewLen++] = '\\';
            m_FullFolderFileName[nNewLen] = 0;
            if (!AddFolderToPak(nNewLen))
            {
                bOk = false;
                break;
            }
        }
        else
        {
            m_FullFolderFileName[nNewLen] = 0;
            if (m_pCallback && !m_pCallback(m_FullFolderFileName))
                continue;
            if (!AddElemToPak())
            {
                bOk = false;
                break;
            }
        }
    }while(::FindNextFile(hFindHandle, &FindData));

    ::FindClose(hFindHandle);
    hFindHandle = INVALID_HANDLE_VALUE ;
    return bOk;
}
Esempio n. 6
0
void MPUManager::__WorkThreadPush()
{
	__CaptureData_t _Data;

	memset( &_Data, 0, sizeof(__CaptureData_t) );

	for(;!m_bStop;)
	{
		usleep(5*1000);

		if( __LoadDataFromDevice( &_Data ) )
		{
			m_pCallback( &_Data );
		}
	}
}
Esempio n. 7
0
// Handle the right command
LTBOOL CLTGUISlider::OnRight()
{
	if (m_bDisplayOnly) return LTFALSE;

	int nPos = m_nSliderPos+m_nSliderIncrement;
	if ( nPos > m_nMaxSlider )
	{
		nPos = m_nMaxSlider;
	}
	if (nPos != m_nSliderPos)
	{
		if (m_pCallback && !m_pCallback(this,nPos,m_nSliderPos))
			return LTFALSE;
		SetSliderPos(nPos);
       return LTTRUE;
	}
    return LTFALSE;
}
Esempio n. 8
0
void CMessageBox::Close(LTBOOL bReturn)
{
	if (!m_bVisible)
		return;

	if (m_pCallback)
	{
		m_pCallback(bReturn, m_pData);
	}

	//hack to prevent cursor from showing up after state transition
	if (g_pInterfaceMgr->GetGameState() == GS_PLAYING)
		m_bCursorWasUsed = LTFALSE;

//	g_pInterfaceMgr->UseCursor(m_bCursorWasUsed);
	if (!m_bGameWasPaused)
        g_pGameClientShell->PauseGame(LTFALSE);
	m_MsgBox.Destroy();

    m_bVisible = LTFALSE;
	g_pInterfaceMgr->UpdateCursorState();
}
Esempio n. 9
0
LTBOOL CLTGUISlider::OnLButtonUp(int x, int y)
{
	if (m_bDisplayOnly) return LTFALSE;
	if (m_bOverLeft) return OnLeft();
	if (m_bOverRight) return OnRight();
	if (x >= m_rcBar.left && y >= m_rcBar.top && x <= m_rcBar.right && y <= m_rcBar.bottom)
	{
		float fPercent = (float)(x - m_rcBar.left) / (float)(m_rcBar.right - m_rcBar.left);
		int nPos = m_nSliderIncrement * (int)((fPercent * (float)(m_nMaxSlider - m_nMinSlider) / (float)m_nSliderIncrement) + 0.5f);
		if (nPos+m_nMinSlider != m_nSliderPos)
		{
			if (m_pCallback && !m_pCallback(this,(nPos+m_nMinSlider),m_nSliderPos))
				return LTFALSE;

			SetSliderPos(nPos+m_nMinSlider);
			return LTTRUE;
		}

	}
	return LTFALSE;

}
Esempio n. 10
0
void CCommunity::DownloadSuccess( char* pCompletedData, size_t completedLength )
{
    // Get the returned status
    eVerificationResult Status = VERIFY_ERROR_UNEXPECTED;
    if ( completedLength > 0 )
    {
        Status = (eVerificationResult)(pCompletedData[0] - 48);
    }
            
    m_bLoggedIn = Status == VERIFY_ERROR_SUCCESS;
    m_ulStartTime = 0;

    // Change GUI
    CLocalGUI::GetSingleton ().GetMainMenu()->ChangeCommunityState ( m_bLoggedIn, m_strUsername );
    CLocalGUI::GetSingleton ().GetMainMenu()->GetSettingsWindow()->OnLoginStateChange ( m_bLoggedIn );

    // Perform callback
    if ( m_pCallback )
    {
        m_pCallback ( m_bLoggedIn, szVerificationMessages[Status], m_pVerificationObject );
        m_pCallback = NULL;
        m_pVerificationObject = NULL;
    }
}
Esempio n. 11
0
BOOL CHttpDataParser::ParseRecvData( PBYTE pRecvData,int nRecvDataLen,BOOL *pbFinalData)
{
	BOOL bAddRes = FALSE;
	do 
	{
		if ( NULL == pRecvData || nRecvDataLen == 0 )
		{
			break;
		}

		//如果还没有接受到头部,则缓存数据,等待头部
		if ( FALSE == m_bHeaderOk )
		{
			m_bufHead.AppendData(pRecvData,nRecvDataLen);
		}
		else
		{
			m_bufContent.AppendData(pRecvData,nRecvDataLen);
		}

		if ( FALSE == m_bHeaderOk )
		{
			BYTE *pHeadDataBuffer = m_bufHead.GetDataBuffer();
			LONGLONG llHeadDataLen = m_bufHead.GetTotalBufferLen();
			CHttpRecvParser recvparser;
			if (recvparser.ParseData((const char *)pHeadDataBuffer,llHeadDataLen) )
			{
				m_bHeaderOk = TRUE;

				m_nContentStart = recvparser.GetContentStart();

				int nRecvContentLen = llHeadDataLen - m_nContentStart;
				if ( nRecvContentLen > 0 )
				{
					m_bufContent.AppendData(pHeadDataBuffer+m_nContentStart,nRecvContentLen);
				}

				m_pCallback(m_pCallbackParam,pHeadDataBuffer,m_nContentStart,TRUE);

				CStringA strContentLen;
				CStringA strContentEncoding;
				CStringA strTransferEncoding;

				strContentLen = recvparser.GetValueByName("Content-Length");
				strContentEncoding = recvparser.GetValueByName("Content-Encoding");
				strTransferEncoding = recvparser.GetValueByName("Transfer-Encoding");

				if ( !strContentLen.IsEmpty() )
				{
					//没有传输编码
					m_teEncoding = TE_NO_ENCODING;
					m_llTotalContentLen = _ttoi64(CString(strContentLen));
				}
				else if( !strTransferEncoding.IsEmpty() )
				{
					//有传输编码
					if ( strTransferEncoding.CompareNoCase("chunked") == 0 )
					{
						m_teEncoding = TE_CHUNKED;
					}
					else
					{
						ASSERT(FALSE);
					}
				}
				else
				{
					m_teEncoding = TE_NO_ENCODING;
					m_llTotalContentLen = 0;
				}

				if( !strContentEncoding.IsEmpty() )
				{
					//内容有压缩编码
					if ( strContentEncoding.Find("gzip") >= 0 )
					{
						m_ceEncoding = CE_GZIP;
					}
					else
					{
						m_ceEncoding = CE_UNKNOWN;
					}
				}
				else
				{
					m_ceEncoding = CE_NO_ENCODING;
				}
			}
		}

		if ( m_bHeaderOk )
		{
			BYTE *pContentDataBuffer = m_bufContent.GetDataBuffer();
			LONGLONG llContentDataLen = m_bufContent.GetTotalBufferLen();

			if ( pContentDataBuffer && llContentDataLen )
			{
				HandleContentData( pContentDataBuffer , llContentDataLen,pbFinalData);
				m_bufContent.DestoryData();
			}
		}

		bAddRes = TRUE;

	} while (FALSE);

	return bAddRes;
}
void CGEWebRequest::OnExit()
{
	if ( m_pCallback )
		m_pCallback( (char*) m_Result.Base(), m_pError );
}
HRESULT DetectionModule_touchLib::CallCallbackFunction()
{
	m_pCallback(m_callbackArgc,m_callbackArgv);
	return S_OK;
}