void CG2Node::OnPacket(G2Packet* pPacket) { //qDebug() << "Got packet " << pPacket->GetType() << pPacket->ToHex() << pPacket->ToASCII(); //try //{ if( !Network.RoutePacket(pPacket) ) { if( pPacket->IsType("PI") ) { OnPing(pPacket); } else if( pPacket->IsType("PO") ) { OnPong(pPacket); } else if( pPacket->IsType("LNI") ) { OnLNI(pPacket); } else if( pPacket->IsType("KHL") ) { OnKHL(pPacket); } else if( pPacket->IsType("QHT") ) { //OnQHT(pPacket); } else if( pPacket->IsType("Q2") ) { OnQuery(pPacket); } else if( pPacket->IsType("QKR") ) { OnQKR(pPacket); } else if( pPacket->IsType("QKA") ) { OnQKA(pPacket); } else if( pPacket->IsType("QA") ) { OnQA(pPacket); } else if( pPacket->IsType("QH2") ) { OnQH2(pPacket); } else { qDebug() << "Unknown packet " << pPacket->GetType(); } } /*} catch(...) { qDebug() << "Packet error in child packets"; }*/ }
void CDataBase::SetAsBinary(LPTSTR lpszStatement, LPBYTE lpBinaryBuffer, SQLUINTEGER BinaryBufferSize) { /* add Clear(); before query */ Clear(); // #ShadowKing SQLINTEGER cbValueSize = -0x64 - BinaryBufferSize; SQLPOINTER pToken; BYTE cBUFFER[10000]; SQLRETURN Result; SQLBindParameter(m_hStmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY , SQL_LONGVARBINARY, BinaryBufferSize, 0, (SQLPOINTER)1, 0, &cbValueSize); OnQuery(lpszStatement); SQLExecDirect(m_hStmt, (SQLTCHAR *)lpszStatement, SQL_NTS); Result = SQLParamData(m_hStmt, &pToken); int lOfs=0; while ( Result == SQL_NEED_DATA ) { memcpy(cBUFFER, lpBinaryBuffer, sizeof(cBUFFER)); Result = SQLPutData(m_hStmt, cBUFFER, BinaryBufferSize); Result = SQLParamData(m_hStmt, &pToken); lOfs += sizeof(cBUFFER); } SQLParamData(m_hStmt, &pToken); Clear(); }
bool CDataBase::Exec(const char * szQuery) { bool bReturn = false; // ---- Clear(); // #ShadowKing : clean the cursor before use it // ---- m_Return = SQLExecDirect(m_hStmt, (SQLCHAR *)szQuery, SQL_NTS); // ---- OnQuery(szQuery); // ---- if((m_Return == SQL_SUCCESS) || (m_Return == SQL_SUCCESS_WITH_INFO) || (m_Return == SQL_NO_DATA)) { SQLRowCount(m_hStmt, & m_AfftedRowCount); SQLNumResultCols(m_hStmt, & m_nCol); // ---- if (m_nCol > MAXCOL) { OnError("You have exceeded the maximum number of columns"); } else if(m_nCol == 0) { Clear(); // ---- bReturn = true; } else { for (int i = 0 ; i < m_nCol ; i++) { SQLBindCol(m_hStmt, i+1, SQL_C_CHAR, m_Col[i], 255, & m_lCol[i]); SQLDescribeCol(m_hStmt, i+1, m_ColName[i], 30, NULL, NULL, NULL, NULL, NULL); } // ---- bReturn = true; } } else { Diagnostic(); } // ---- return bReturn; }
int CDataBase::GetAsBinary(LPTSTR lpszStatement, LPBYTE OUT lpszReturnBuffer) {/* add Clear(); before query */ SQLCHAR * pSQLBuf; SQLINTEGER BufLen; SQLCHAR SQLBinary[10000]; SQLINTEGER lOfs = 0; SQLINTEGER SQLLen; SQLRETURN SQLResult; Clear(); // #ShadowKing //SQLAllocHandle(SQL_HANDLE_STMT, m_hConnection, &m_hStmt); OnQuery(lpszStatement); SQLResult = SQLExecDirect(m_hStmt, (SQLTCHAR *)lpszStatement, SQL_NTS); if ( SQLResult != SQL_SUCCESS ) { Diagnostic(); return -1; } while ( true ) { SQLResult = SQLFetch(m_hStmt); if ( SQLResult == SQL_NO_DATA ) break; pSQLBuf = lpszReturnBuffer; while ( true ) { SQLResult = SQLGetData(m_hStmt, 1, SQL_C_BINARY , SQLBinary, sizeof(SQLBinary), &SQLLen); if ( SQLResult == SQL_NO_DATA ) break; if ( SQLLen == -1 ) { Clear(); return 0; } if ( SQLResult == SQL_SUCCESS ) { BufLen = SQLLen; } else { BufLen = sizeof(SQLBinary); } lOfs += BufLen; memcpy(pSQLBuf, SQLBinary, BufLen); pSQLBuf = &pSQLBuf[lOfs]; } } //SQLFreeHandle(SQL_HANDLE_STMT, m_hStmt); return BufLen; }
BOOL CDCNeighbour::OnPacket(CDCPacket* pPacket) { pPacket->SmartDump( &m_pHost, FALSE, FALSE, (DWORD_PTR)this ); m_nInputCount++; m_tLastPacket = GetTickCount(); if ( pPacket->m_nLength < 2 ) { return OnPing(); } else if ( *pPacket->m_pBuffer == '<' ) { return OnChat( pPacket ); } else if ( *pPacket->m_pBuffer != '$' ) { return OnUnknown( pPacket ); } if ( pPacket->Compare( _P("$Search ") ) ) { return OnQuery( pPacket ); } else if ( pPacket->Compare( _P("$To: ") ) ) { return OnChatPrivate( pPacket ); } else if ( pPacket->Compare( _P("$HubTopic ") ) ) { return OnHubTopic( pPacket ); } else if ( pPacket->Compare( _P("$HubName" ) ) ) { return OnHubName( pPacket ); } // Convert '|' to '\0' (make ASCIIZ) pPacket->m_pBuffer[ pPacket->m_nLength - 1 ] = 0; LPCSTR szCommand = (LPCSTR)pPacket->m_pBuffer; // Split off parameters LPSTR szParams = strchr( (LPSTR)pPacket->m_pBuffer, ' ' ); if ( szParams ) { *szParams++ = 0; } if ( strcmp( szCommand, "$MyINFO" ) == 0 ) { return OnUserInfo( szParams ); } else if ( strcmp( szCommand, "$Quit" ) == 0 ) { return OnQuit( szParams ); } else if ( strcmp( szCommand, "$Lock" ) == 0 ) { return OnLock( szParams ); } else if ( strcmp( szCommand, "$Supports" ) == 0 ) { return OnSupports( szParams ); } else if ( strcmp( szCommand, "$Hello" ) == 0 ) { return OnHello( szParams ); } else if ( strcmp( szCommand, "$OpList" ) == 0 ) { return OnOpList( szParams ); } else if ( strcmp( szCommand, "$ConnectToMe" ) == 0 ) { return OnConnectToMe( szParams ); } else if ( strcmp( szCommand, "$ForceMove " ) == 0 ) { return OnForceMove( szParams ); } else if ( strcmp( szCommand, "$ValidateDenide" ) == 0 ) { return OnValidateDenide(); } else if ( strcmp( szCommand, "$GetPass" ) == 0 ) { return OnGetPass(); } else if ( strcmp( szCommand, "$UserIP" ) == 0 ) { return OnUserIP( szParams ); } else if ( strcmp( szCommand, "$ZOn" ) == 0 ) { return OnZOn(); } else if ( strcmp( szCommand, "$RevConnectToMe" ) == 0 ) { return OnRevConnectToMe( szParams ); } return OnUnknown( pPacket ); }