void UPDATECONTEXT_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; SRVR_CONTEXT_def *srvrContext; long* param[1]; retcode = decodeParameters(1, param, pnode->r_buffer(), pnode->r_buffer_length()); if (retcode != CEE_SUCCESS) { //LCOV_EXCL_START strcpy( errStrBuf2, "odbcs_srvr.cpp"); strcpy( errStrBuf3, "SRVR-UPDATECONTEXT_IOMessage"); strcpy( errStrBuf4, "buffer overflow"); sprintf( errStrBuf5, "retcode <%d>", retcode); logError( PROGRAM_ERROR, SEVERITY_MAJOR, CAPTURE_ALL + PROCESS_STOP ); exit(1000); //LCOV_EXCL_STOP } srvrContext = (SRVR_CONTEXT_def*)param[0]; odbc_SQLSvc_UpdateServerContext_ame_( objtag_ , call_id_ , srvrContext ); }
CEE_status odbc_SQLSvc_TerminateDialogue_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ const struct odbc_SQLSvc_TerminateDialogue_exc_ *exception_ ) { SRVRTRACE_ENTER(FILE_OIOM+2); CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEERCV_IOMessage_exc_ RCVexception_; IDL_short error; short reply_count; CEERCV_IOMessage_reply_seq_ reply; char* buffer = NULL; UInt32 message_length = 0; sts = odbc_SQLSvc_TerminateDialogue_param_res_( pnode , buffer , message_length , exception_ ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); SRVRTRACE_EXIT(FILE_OIOM+2); return sts; }
void MONITORCALL_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; DIALOGUE_ID_def dialogueId; long* param[1]; retcode = decodeParameters(1, param, pnode->r_buffer(), pnode->r_buffer_length()); if (retcode != CEE_SUCCESS) { //LCOV_EXCL_START strcpy( errStrBuf2, "odbcs_srvr.cpp"); strcpy( errStrBuf3, "SRVR-MONITORCALL_IOMessage"); strcpy( errStrBuf4, "buffer overflow"); sprintf( errStrBuf5, "retcode <%d>", retcode); logError( PROGRAM_ERROR, SEVERITY_MAJOR, CAPTURE_ALL + PROCESS_STOP ); exit(1000); //LCOV_EXCL_STOP } dialogueId = *(IDL_long*)param[0]; odbc_SQLSvc_MonitorCall_ame_( objtag_ , call_id_ , dialogueId ); }
void SQLDISCONNECT_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; char *curptr; DIALOGUE_ID_def dialogueId; curptr = pnode->r_buffer(); // Copy 1st Parameter // copy dailogueId dialogueId = *(IDL_long *)(curptr); odbc_SQLSvc_TerminateDialogue_ame_( objtag_ , call_id_ , dialogueId ); }
void odbc_SQLSrvr_UpdateLob_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def * call_id_ , /* In */ const struct odbc_SQLSvc_UpdateLob_exc_ * exception_ ) { CInterface * pnode = (CInterface *) objtag_; CEE_status sts = CEE_SUCCESS; IDL_short error; CEERCV_IOMessage_reply_seq_ reply; char * buffer = NULL; UInt32 message_length = 0; sts = odbc_SQLsrvr_UpdateLob_param_res_( pnode , buffer , message_length , exception_ ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); }
void SQLENDTRAN_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; IDL_char *curptr; IDL_long inputPosition = 0; DIALOGUE_ID_def dialogueId; IDL_unsigned_short transactionOpt; curptr = pnode->r_buffer(); dialogueId = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(dialogueId); transactionOpt = *(IDL_unsigned_short*)(curptr+inputPosition); inputPosition += sizeof(transactionOpt); odbc_SQLSrvr_EndTransaction_ame_( objtag_ , call_id_ , dialogueId , transactionOpt); } // SQLENDTRAN_IOMessage()
CEE_status odbc_SQLSrvr_EndTransaction_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ const struct odbc_SQLSvc_EndTransaction_exc_ *exception_ , /* In */ ERROR_DESC_LIST_def *sqlWarning ) { SRVRTRACE_ENTER(FILE_OIOM+13); CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEERCV_IOMessage_exc_ RCVexception_; IDL_short error; short reply_count; CEERCV_IOMessage_reply_seq_ reply; char* buffer = NULL; UInt32 message_length = 0; odbc_SQLSrvr_EndTransaction_param_res_( pnode , buffer , message_length , exception_ , sqlWarning ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); SRVRTRACE_EXIT(FILE_OIOM+13); return sts; } // odbc_SQLSrvr_EndTransaction_ts_res_()
CEE_status odbc_SQLSrvr_SetConnectionOption_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ const struct odbc_SQLSvc_SetConnectionOption_exc_ *exception_ , /* In */ ERROR_DESC_LIST_def *sqlWarning ) { SRVRTRACE_ENTER(FILE_OIOM+3); CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; IDL_char* buffer = NULL; IDL_unsigned_long message_length = 0; sts = odbc_SQLSrvr_SetConnectionOption_param_res_( pnode , buffer , message_length , exception_ , sqlWarning ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); SRVRTRACE_EXIT(FILE_OIOM+3); return sts; }
void CInterfaceManager::Load() { m_oMutex.Enter(); if(m_pAutoLibrary == NULL) { uint32 i, nCount; CString oLibDir; const char* sAppHome = CFilePathInfo::GetInstance()->GetHome(); oLibDir += sAppHome; oLibDir += "/lib/"; oLibDir += m_sLibDir; m_pAutoLibrary = new CAutoLibrary(oLibDir.GetStr()); nCount = m_oInterfaces.GetSize(); for(i=nCount; i; --i) { CInterface* pInterface = m_oInterfaces[i-1]; if(QueryInterface(pInterface->GetInterfaceName()) != pInterface) { m_oMutex.Leave(); FocpAbort(( "re-register interface :%s", pInterface->GetInterfaceName())); } } } m_oMutex.Leave(); }
CEE_status odbc_SQLSrvr_Close_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ IDL_long returnCode , /* In */ IDL_long rowsAffected , /* In */ IDL_long sqlWarningOrErrorLength , /* In */ BYTE *sqlWarningOrError ) { SRVRTRACE_ENTER(FILE_OIOM+12); CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; IDL_char* buffer = NULL; IDL_unsigned_long message_length = 0; odbc_SQLSrvr_Close_param_res_( pnode , buffer , message_length , returnCode , sqlWarningOrErrorLength , sqlWarningOrError , rowsAffected ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); SRVRTRACE_EXIT(FILE_OIOM+12); return sts; }
int main( int argc, char **argv ) { CInterface interface; interface.init(); interface.async_call_this_method_run_in_ioservice_thead(100, callback_func); getchar(); interface.uninit(); return 0; }
v8::Handle<v8::Value> V8CInterface::getPlatformMethodCustom(const v8::Arguments& args) { CInterface* imp = V8CInterface::toNative(args.Holder()); RefPtr<CPlatform> cPlatform = imp->getPlatform(); if (!cPlatform) return throwError(v8SyntaxError, "Cannot create new CPlatform object.", args.GetIsolate()); if (!openclFlag) return throwError(v8SyntaxError, "Cannot call getPlatform when OpenCL is not loaded.", args.GetIsolate()); return toV8(cPlatform.get(), v8::Handle<v8::Object>(), args.GetIsolate()); }
int main(const int argc, const char **argv) { std::stringstream usage; std::string cc = ""; // hash map for fetching options data options_map op_data; try { // process command line arguments and 'usage' should contain // the usage message. OptionParser op(argc, argv, usage); int rval = op.processOptions(op_data); if (rval == 0) { // fetch user input from the interfacing code CInterface ci; // yes means load readline support cc = ci.getUserInput(op_data["r"] == "yes"); } else if (rval == 2) { std::cout << usage.str(); return 0; } } catch (po::error & e) { std::cout << "Invalid options passed ...\n"; std::cout << usage.str(); return 1; } // add data meant to be appended to the beginning cc = op_data["a"] + "\n" + cc; // remove beginning and trailing whitespaces with custom function cc = Utility::trim(cc); // write to file only if content is not totally blank if (!cc.empty()) { Journal journal; journal.takeNote(cc); std::string dateformat = op_data["d"]; if (dateformat.begin() == dateformat.end()) { dateformat = "%d/%m/%Y-%H:%M:%S"; } journal.saveNote(dateformat); } return 0; }
CEE_status odbc_SQLSrvr_Execute_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ IDL_long returnCode , /* In */ IDL_long sqlWarningOrErrorLength , /* In */ BYTE *sqlWarningOrError , /* In */ IDL_long rowsReturned , /* In */ IDL_long sqlQueryType , /* In */ IDL_long estimatedCost , /* In */ IDL_long outValuesLength , /* In */ BYTE *outValues , /* In */ IDL_long outputDescLength // Used with execdirect , /* In */ BYTE *outputDesc // Used with execdirect , /* In */ Long stmtHandle // Used for SPJ result sets , /* In */ IDL_long stmtHandleKey ) { SRVRTRACE_ENTER(FILE_OIOM+23); CInterface *pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEERCV_IOMessage_exc_ RCVexception_; IDL_short error; short reply_count; CEERCV_IOMessage_reply_seq_ reply; char *buffer = NULL; UInt32 message_length = 0; odbc_SQLSrvr_Execute_param_res_( pnode , buffer , message_length , returnCode , sqlWarningOrErrorLength , sqlWarningOrError , rowsReturned , sqlQueryType , estimatedCost , outValuesLength , outValues , outputDescLength , outputDesc , stmtHandle , stmtHandleKey ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); SRVRTRACE_EXIT(FILE_OIOM+11); return sts; } // end odbc_SQLSrvr_Execute_ts_res_
CEE_status odbc_SQLSrvr_Prepare_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ IDL_long returnCode , /* In */ IDL_long sqlWarningOrErrorLength , /* In */ BYTE *sqlWarningOrError , /* In */ IDL_long sqlQueryType , /* In */ IDL_long stmtHandleKey , /* In */ IDL_long estimatedCost , /* In */ IDL_long inputDescLength , /* In */ BYTE *inputDesc , /* In */ IDL_long outputDescLength , /* In */ BYTE *outputDesc ) { SRVRTRACE_ENTER(FILE_OIOM+11); CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEERCV_IOMessage_exc_ RCVexception_; IDL_short error; short reply_count; CEERCV_IOMessage_reply_seq_ reply; char* buffer = NULL; UInt32 message_length = 0; odbc_SQLSrvr_Prepare_param_res_( pnode , buffer , message_length , returnCode , sqlWarningOrErrorLength , sqlWarningOrError , sqlQueryType , stmtHandleKey , estimatedCost , inputDescLength , inputDesc , outputDescLength , outputDesc ); if (sts == CEE_SUCCESS) { sts = pnode->send_response(buffer, message_length, call_id_); } SRVRTRACE_EXIT(FILE_OIOM+11); return sts; } /* odbc_SQLSrvr_Prepare_ts_res_() */
void V8CInterface::getPlatformMethodCustom(const v8::FunctionCallbackInfo<v8::Value>& args) { CInterface* imp = V8CInterface::toNative(args.Holder()); RefPtr<CPlatform> cPlatform = imp->getPlatform(); if (!cPlatform) { throwError(v8SyntaxError, "Cannot create new CPlatform object.", args.GetIsolate()); return; } if (!openclFlag) { throwError(v8SyntaxError, "Cannot call getPlatform when OpenCL is not loaded.", args.GetIsolate()); return; } v8SetReturnValue(args, toV8(cPlatform.get(), v8::Handle<v8::Object>(), args.GetIsolate())); }
void SQLSETCONNECTATTR_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; IDL_char *curptr; IDL_long inputPosition = 0; DIALOGUE_ID_def dialogueId; IDL_short connectionOption; IDL_long optionValueNum; IDL_long optionValueStrLen = 0; IDL_string optionValueStr = NULL; curptr = pnode->r_buffer(); dialogueId = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(dialogueId); connectionOption = *(IDL_short*)(curptr+inputPosition); inputPosition += sizeof(connectionOption); optionValueNum = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(optionValueNum); optionValueStrLen = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(optionValueStrLen); if(optionValueStrLen > 0) { optionValueStr = curptr+inputPosition; inputPosition += optionValueStrLen; } odbc_SQLSrvr_SetConnectionOption_ame_( objtag_ , call_id_ , dialogueId , connectionOption , optionValueNum , optionValueStr); } // SQLSETCONNECTATTR_IOMessage()
int nfdump2dot (char* input, char* output, char* ip, char* role_nums, bool summarize_client_roles=true, bool summarize_multi_client_roles=true, bool summarize_server_roles=true, bool summarize_p2p_roles=true){ // return immediately if parameters are empty if(!input) return 1; if(!output) return 2; if(!ip) return 3; if(!role_nums) return 4; // needed for the references std::string in_filename = input; std::string outfilename = output; std::string IP_str = ip; std::string role_num_str = role_nums; // parse role number string set<uint32_t> role_num_set; vector<string> parts; boost::split(parts, role_num_str, boost::is_any_of(",")); try { for (vector<string>::const_iterator it = parts.begin(); it!=parts.end(); ++it) { if ((*it) == "") { continue; } role_num_set.insert(boost::lexical_cast<uint32_t>(*it)); } } catch (boost::bad_lexical_cast const& e) { cerr << "unable to convert role number string to role numbers:" << e.what() << endl; return 5; } // do not try to summarize multi-client roles when not even client-roles are summarized (Bug in haplib?) if(!summarize_client_roles) summarize_multi_client_roles = false; // create the binary represantation of the summary-flags int sum = 1*summarize_client_roles + 2*summarize_multi_client_roles + 4*summarize_server_roles + 8*summarize_p2p_roles; CInterface::summarize_flags_t sum_flags = *((CInterface::summarize_flags_t*)(void*)(&sum)); CInterface libif; bool ok = libif.get_graphlet(in_filename, outfilename, IP_str, sum_flags, (CInterface::filter_flags_t)0, role_num_set); if(!ok) return 6; return 0; }
void SQLFREESTMT_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; IDL_char *stmtLabel = NULL; IDL_long stmtLabelLength = 0; DIALOGUE_ID_def dialogueId = 0; IDL_unsigned_short freeResourceOpt = 0; IDL_char *curptr = NULL; IDL_long inputPosition = 0; curptr = pnode->r_buffer(); // 1st Parameter: Dialogue Id dialogueId = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(dialogueId); // 2nd Param: Statement label stmtLabelLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtLabelLength); if(stmtLabelLength > 0) { stmtLabel = curptr + inputPosition; inputPosition += stmtLabelLength; } // 3rd Parameter: Free resource options freeResourceOpt = *(IDL_unsigned_short*)(curptr+inputPosition); inputPosition += sizeof(freeResourceOpt); odbc_SQLSrvr_Close_ame_( objtag_ , call_id_ , dialogueId , stmtLabel , freeResourceOpt ); } /* SQLFREESTMT_IOMessage() */
CEE_status odbc_SQLSrvr_Fetch_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ IDL_long returnCode , /* In */ IDL_long sqlWarningOrErrorLength , /* In */ BYTE *sqlWarningOrError , /* In */ IDL_long rowsReturned , /* In */ IDL_long outValuesFormat , /* In */ IDL_long outValuesLength , /* In */ BYTE *outValues ) { SRVRTRACE_ENTER(FILE_OIOM+23); CInterface *pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEERCV_IOMessage_exc_ RCVexception_; IDL_short error; short reply_count; CEERCV_IOMessage_reply_seq_ reply; char *buffer = NULL; UInt32 message_length = 0; odbc_SQLSrvr_Fetch_param_res_( pnode , buffer , message_length , returnCode , sqlWarningOrErrorLength , sqlWarningOrError , rowsReturned , outValuesFormat , outValuesLength , outValues ); if (sts == CEE_SUCCESS) { sts = pnode->send_response(buffer, message_length, call_id_); } SRVRTRACE_EXIT(FILE_OIOM+11); return sts; } // end odbc_SQLSrvr_Fetch_ts_res_
/*================================================================= * Function ID : SMT_EveryDayGetAllInitAssistantThread * Input : void * Output : void * Author : * Date : 2009 8 * Return : void * Description : 主线程(定时获取黑名单)12小时 * Notice : * *=================================================================*/ UINT SMT_EveryDayGetAllInitAssistantThread( LPVOID pParam ) { DWORD nDStartTime=GetTickCount(); int FunId; int updata1=0; int updata2=0; time_t rawtime; struct tm * timeinfo; try { while( g_StartFlag ) { time ( &rawtime ); timeinfo = localtime ( &rawtime ); //执行设置黑名单更新时间1 if ((timeinfo->tm_hour == g_IniFilePara.DownBlacktime1) && (updata1!=timeinfo->tm_mday)) { FunId=SMT_SMARTFRONTDOWNALLBLACK_EVERYDAY; g_CInterface.SMT_GetAllInitBlackList(FunId); updata1=timeinfo->tm_mday; } //执行设置黑名单更新时间2 if ((timeinfo->tm_hour == g_IniFilePara.DownBlacktime2) && (updata2!=timeinfo->tm_mday)) { FunId=SMT_SMARTFRONTDOWNALLBLACK_EVERYDAY; g_CInterface.SMT_GetAllInitBlackList(FunId); updata2=timeinfo->tm_mday; } } } catch(...) { ((CSmartCommunicationDlg*)pParam)->WriteLog("调用金仕达接口时出现异常,前置自动停止运行!!"); MessageBox(NULL,"调用金仕达接口时出现异常,前置自动停止运行!!","严重错误",MB_OK); ((CSmartCommunicationDlg*)pParam)->OnButtonStop(); } return 0; }
CEE_status odbc_SQLSrvr_GetSQLCatalogs_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ const struct odbc_SQLSvc_GetSQLCatalogs_exc_ *exception_ , /* In */ const IDL_char *catStmtLabel , /* In */ SQLItemDescList_def *outputDesc , /* In */ ERROR_DESC_LIST_def *sqlWarning , /* In */ SRVR_STMT_HDL *pSrvrStmt ) { SRVRTRACE_ENTER(FILE_OIOM+14); CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEERCV_IOMessage_exc_ RCVexception_; IDL_short error; short reply_count; CEERCV_IOMessage_reply_seq_ reply; char* buffer = NULL; UInt32 message_length = 0; odbc_SQLSrvr_GetSQLCatalogs_param_res_( pnode , buffer , message_length , exception_ , catStmtLabel , outputDesc , sqlWarning , pSrvrStmt ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); SRVRTRACE_EXIT(FILE_OIOM+14); return sts; } // odbc_SQLSrvr_GetSQLCatalogs_ts_res_()
CEE_status odbc_SQLSrvr_ExtractLob_ts_res_( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ const struct odbc_SQLsrvr_ExtractLob_exc_ *exception_ , /* In */ IDL_long_long lobDataLen , /* In */ BYTE *lobDataValue ) { CInterface* pnode = (CInterface *)objtag_; CEE_status sts = CEE_SUCCESS; IDL_short error; CEERCV_IOMessage_reply_seq_ reply; char * buffer = NULL; UInt32 message_length = 0; sts = odbc_SQLsrvr_ExtractLob_param_res_( pnode , buffer , message_length , exception_ , lobDataLen , lobDataValue ); if (sts == CEE_SUCCESS) sts = pnode->send_response(buffer, message_length, call_id_); if (lobDataValue != NULL) { delete [] lobDataValue; lobDataValue = NULL; } return sts; }
/*================================================================= * Function ID : SMT_StartQueryTaskThread * Input : void * Output : void * Author : * Date : 2006 2 * Return : void * Description : 主线程(定时获取任务) * Notice : * *=================================================================*/ UINT SMT_StartQueryTaskThread( LPVOID pParam ) { try { g_CInterface.SMT_GetSysTask(); } catch(...) { ((CSmartCommunicationDlg*)pParam)->WriteLog("调用金仕达接口时出现异常,前置自动停止运行!!"); MessageBox(NULL,"调用金仕达接口时出现异常,前置自动停止运行!!","严重错误",MB_OK); ((CSmartCommunicationDlg*)pParam)->OnButtonStop(); } return 0; }
void CPartie::Commencer (CInterface & Interface, player_info_t Joueur1Information, player_info_t Joueur2Information) { //MatRem 14/02/2003 // Groove - 29/03/2003 - Inicialisation du plateau Interface.InitialiserPlateau (ReglesJeu.GetGrilleAdr ()); //Initialisation du joueur 1 //Joueur Humain if(Joueur1Information.Type==JOUEUR_HUMAIN) pJoueur1 = new CJoueurHumain (&Interface, Joueur1Information.szNom,JOUEUR_1); //Joueur Ia if(Joueur1Information.Type==JOUEUR_IA) { //On initialise le fichier à charger par rapport au niveau de l'ia char * s; switch(Joueur1Information.Niveau) { case NIVEAU_IA_1: s="ia1.dat"; break; case NIVEAU_IA_2: s="ia2.dat"; break; case NIVEAU_IA_3: s="ia3.dat"; break; case NIVEAU_IA_4: s="ia4.dat"; break; case NIVEAU_IA_5: s="ia5.dat"; break; default: s="ia5.dat"; break; } //On crée le joueur1 dynamiquement pJoueur1 = new CJoueurIA(s,&Interface,JOUEUR_1); } //Initialisation du joueur 2 //Joueur Humain if(Joueur2Information.Type==JOUEUR_HUMAIN) pJoueur2 = new CJoueurHumain(&Interface, Joueur2Information.szNom,JOUEUR_2); //Joueur Ia if(Joueur2Information.Type==JOUEUR_IA) { char * s; switch(Joueur2Information.Niveau) { case NIVEAU_IA_1: s="ia1.dat"; break; case NIVEAU_IA_2: s="ia2.dat"; break; case NIVEAU_IA_3: s="ia3.dat"; break; case NIVEAU_IA_4: s="ia4.dat"; break; case NIVEAU_IA_5: s="ia5.dat"; break; default: s="ia1.dat"; break; } pJoueur2 = new CJoueurIA(s,&Interface,JOUEUR_2); } //Initialisation des scores pJoueur1->SetScore(2); pJoueur2->SetScore(2); //Initialisation des régles du jeu donc de la grille ReglesJeu.Initialiser(); //initialisation du drapeau de fin de partie et du tour bEstPartieFini=false; TourJoueur=TOUR_JOUEUR_1; }
bool CHttpProtocol::notifySelected(ISocket *sock,unsigned selected, IPersistentHandler* persistentHandler, bool shouldClose) { try { char name[256]; int port = sock->name(name, 255); CEspApplicationPort *apport = queryApplicationPort(port); if(apport == NULL) throw MakeStringException(-1, "binding not found!"); if(apport != NULL) { Owned<ISocket> accepted; if (persistentHandler == nullptr) accepted.setown(sock->accept()); else accepted.set(sock); if (accepted.get() != NULL) { char peername[256]; int port = accepted->peer_name(peername, 256); #if defined(_DEBUG) DBGLOG("HTTP connection from %s:%d on %s socket", peername, port, persistentHandler?"persistent":"new"); #endif if(m_maxConcurrentThreads > 0) { // Using Threading pool instead of generating one thread per request. void ** holder = new void*[7]; holder[0] = (void*)(accepted.getLink()); holder[1] = (void*)apport; int maxEntityLength = getMaxRequestEntityLength(); holder[2] = (void*)&maxEntityLength; bool useSSL = false; holder[3] = (void*)&useSSL; ISecureSocketContext* ctx = NULL; holder[4] = (void*)ctx; holder[5] = (void*)persistentHandler; holder[6] = (void*)&shouldClose; try { http_thread_pool->start((void*)holder, "", m_threadCreateTimeout > 0?m_threadCreateTimeout*1000:0); } catch(...) { IERRLOG("Error starting thread from http thread pool."); if(accepted.get()) { accepted->close(); //Assumption here is that if start() throws exception, that means the new //thread hasn't been started, so there's no other thread holding a link. CInterface* ci = dynamic_cast<CInterface*>(accepted.get()); if(ci && ci->IsShared()) accepted->Release(); } delete [] holder; throw; } delete [] holder; } else { /* create one thread per request */ CHttpThread *workthread = new CHttpThread(accepted.getLink(), apport, CEspProtocol::getViewConfig(), false, nullptr, persistentHandler); workthread->setMaxRequestEntityLength(getMaxRequestEntityLength()); workthread->setShouldClose(shouldClose); workthread->start(); workthread->Release(); } } } else { throw MakeStringException(-1, "can't acquire bindings IEspHttpBinding interface (via dynamic_cast)!"); } } catch (IException *e) { StringBuffer estr; IERRLOG("Exception(%d, %s) in CHttpProtocol::notifySelected()", e->errorCode(), e->errorMessage(estr).str()); e->Release(); } catch(...) { IERRLOG("Unknown Exception in CHttpProtocol::notifySelected()"); } return false; }
void SQLFETCH_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ IDL_short operation_id ) { CInterface *pnode = (CInterface*)objtag_; IDL_char *curptr; DIALOGUE_ID_def dialogueId = 0; IDL_long sqlAsyncEnable = 0; IDL_long queryTimeout = 0; Long stmtHandle = 0; IDL_long stmtHandleKey = 0; IDL_long stmtLength = 0; IDL_string stmtLabel = NULL; IDL_long stmtLabelCharset = 0; IDL_unsigned_long_long maxRowCnt = 0; IDL_unsigned_long_long maxRowLen = 0; IDL_long cursorLength = 0; IDL_string cursorName = NULL; IDL_long cursorCharset = 0; IDL_long setStmtOptionsLength = 0; IDL_string setStmtOptions = NULL; IDL_long inputPosition = 0; curptr = pnode->r_buffer(); dialogueId = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(dialogueId); sqlAsyncEnable = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlAsyncEnable); queryTimeout = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(queryTimeout); stmtHandleKey = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(IDL_long); stmtHandle = 0; if( stmtHandleKey > 0 ) stmtHandle = srvrGlobal->stmtHandleMap[stmtHandleKey]; stmtLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtLength); if (stmtLength > 0) { stmtLabel = curptr+inputPosition; inputPosition += stmtLength; stmtLabelCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtLabelCharset); } maxRowCnt = *(IDL_unsigned_long_long*)(curptr+inputPosition); inputPosition += sizeof(maxRowCnt); maxRowLen = *(IDL_unsigned_long_long*)(curptr+inputPosition); inputPosition += sizeof(maxRowLen); /* Unused for now */ cursorLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(cursorLength); if (cursorLength > 0) { cursorName = curptr+inputPosition; inputPosition += cursorLength; cursorCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(cursorCharset); } /* Unused for now */ setStmtOptionsLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(setStmtOptionsLength); if (setStmtOptionsLength > 0) { setStmtOptions = curptr+inputPosition; inputPosition += setStmtOptionsLength; } odbc_SQLSrvr_Fetch_ame_( objtag_ , call_id_ , dialogueId , operation_id , sqlAsyncEnable , queryTimeout , stmtHandle , stmtLabel , maxRowCnt , maxRowLen); } /* SQLFETCH_IOMessage() */
void SQLPREPARE_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; IDL_char *curptr = NULL; DIALOGUE_ID_def dialogueId = 0; IDL_long sqlAsyncEnable = 0; IDL_long queryTimeout = 0; IDL_short stmtType = 0; IDL_long sqlStmtType = 0; IDL_long stmtLength = 0; IDL_char *stmtLabel = NULL; IDL_long stmtLabelCharset = 0; IDL_long cursorLength = 0; IDL_string cursorName = NULL; IDL_long cursorCharset = 0; IDL_long moduleNameLength = 0; IDL_char *moduleName = NULL; IDL_long moduleCharset = 0; IDL_long_long moduleTimestamp = 0; IDL_long sqlStringLength = 0; IDL_string sqlString = NULL; IDL_long sqlStringCharset = 0; IDL_long setStmtOptionsLength = 0; IDL_string setStmtOptions = NULL; IDL_long stmtExplainLabelLength = 0; IDL_string stmtExplainLabel = NULL; IDL_long maxRowsetSize = 0; IDL_long transactionIDLength = 0; // JDBC is the only one that will use this to join a transaction IDL_long_long transactionID = 0; // JDBC is the only one that will use this to join a transaction IDL_long holdableCursor = SQL_NONHOLDABLE; // default IDL_short *extTransId = NULL; IDL_short ix; IDL_char *temp = NULL; bool all_zero=true; IDL_long inputPosition = 0; curptr = pnode->r_buffer(); dialogueId = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(dialogueId); // to support SAP holdable cursor, the driver overloads this field with the value of the holdable cursor // because currently sqlAsyncEnable is not used. //sqlAsyncEnable = *(IDL_long*)(curptr+inputPosition); holdableCursor = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlAsyncEnable); queryTimeout = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(queryTimeout); stmtType = *(IDL_short*)(curptr+inputPosition); inputPosition += sizeof(stmtType); sqlStmtType = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlStmtType); stmtLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtLength); if (stmtLength > 0) { stmtLabel = curptr+inputPosition; inputPosition += stmtLength; stmtLabelCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtLabelCharset); } cursorLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(cursorLength); if (cursorLength > 0) { cursorName = curptr+inputPosition; inputPosition += cursorLength; cursorCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(cursorCharset); } moduleNameLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(moduleNameLength); if (moduleNameLength > 0) { moduleName = curptr+inputPosition; inputPosition += moduleNameLength; moduleCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(moduleCharset); moduleTimestamp = *(IDL_long_long*)(curptr+inputPosition); inputPosition += sizeof(moduleTimestamp); } sqlStringLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlStringLength); if (sqlStringLength > 0) { sqlString = curptr+inputPosition; inputPosition += sqlStringLength; sqlStringCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlStringCharset); } setStmtOptionsLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(setStmtOptionsLength); if (setStmtOptionsLength > 0) { setStmtOptions = curptr+inputPosition; inputPosition += setStmtOptionsLength; } stmtExplainLabelLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtExplainLabelLength); if (stmtExplainLabelLength > 0) { stmtExplainLabel = curptr+inputPosition; inputPosition += stmtExplainLabelLength; } maxRowsetSize = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(maxRowsetSize); transactionIDLength = *(IDL_unsigned_long*)(curptr+inputPosition); inputPosition += sizeof(transactionIDLength); if(transactionIDLength > 0) { //LCOV_EXCL_START if (transactionIDLength == 17){ extTransId = (IDL_short*)(curptr+inputPosition); temp = (IDL_char*)(curptr+inputPosition); inputPosition += transactionIDLength; // need to check the extTransId, if it contains all 0 (17 bytes), change the address to NULL // this will prevent TMF_JOIN_EXT_ to be called at the odbc_SQLSrvr_..._ame_ for (ix=0; ix<transactionIDLength; ix++) { if (*temp != 0) { all_zero=false; break; } temp++; } if (all_zero) extTransId = NULL; } else{ if(transactionIDLength == 5) transactionID = *(IDL_long*)(curptr+inputPosition); if(transactionIDLength == 9) transactionID = *(IDL_long_long*)(curptr+inputPosition); inputPosition += transactionIDLength; } //LCOV_EXCL_STOP } odbc_SQLSrvr_Prepare_ame_( objtag_ , call_id_ , dialogueId , sqlAsyncEnable , queryTimeout , stmtType , sqlStmtType , stmtLength , stmtLabel , stmtLabelCharset , cursorLength , cursorName , cursorCharset , moduleNameLength , moduleName , moduleCharset , moduleTimestamp , sqlStringLength , sqlString , sqlStringCharset , setStmtOptionsLength , setStmtOptions , stmtExplainLabelLength , stmtExplainLabel , maxRowsetSize , transactionID , extTransId , holdableCursor ); } /* SQLPREPARE_IOMessage() */
void SQLCONNECT_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; char *curptr; CONNECTION_CONTEXT_def inContext; USER_DESC_def userDesc; DIALOGUE_ID_def dialogueId; VERSION_def version[4]; VERSION_def* versionPtr = &version[0]; IDL_long inputPosition = 0; IDL_long datasourceLength = 0; // includes null terminator IDL_long catalogLength = 0; // includes null terminator IDL_long schemaLength = 0; // includes null terminator IDL_long locationLength = 0; // includes null terminator IDL_long userRoleLength = 0; // includes null terminator IDL_long computerNameLength = 0; // includes null terminator IDL_long windowTextLength = 0; // includes null terminator IDL_long connectOptionsLength = 0; // includes null terminator IDL_long sessionNameLength = 0; // includes null terminator IDL_long clientUserNameLength = 0; // includes null terminator IDL_long maxCopyLen; IDL_unsigned_long userSidLength; IDL_long domainNameLength; IDL_long userNameLength; IDL_long passwordLength; curptr = pnode->r_buffer(); // Copy values // Copy 1st Parameter // copy userDesc Type userDesc.userDescType = *(IDL_long *)(curptr + inputPosition); /* * TBD after finalizing security arch */ // userDesc.userDescType = AUTHENTICATED_USER_TYPE; inputPosition += sizeof(userDesc.userDescType); // copy userSidLength userDesc.userSid._length = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(userDesc.userSid._length); // copy userSid if (userDesc.userSid._length > 0) { userDesc.userSid._buffer = (IDL_octet *)(curptr + inputPosition); inputPosition += userDesc.userSid._length; } else userDesc.userSid._buffer = NULL; // copy domainNameLength domainNameLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(domainNameLength); if (domainNameLength > 0) { userDesc.domainName = (IDL_char *)(curptr + inputPosition); inputPosition += domainNameLength; } else userDesc.domainName = NULL; // copy userNameLength userNameLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(userNameLength); if (userNameLength > 0) { userDesc.userName = (IDL_char *)(curptr + inputPosition); inputPosition += userNameLength; } else userDesc.userName = NULL; // copy passwordLength passwordLength = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(passwordLength); if (passwordLength > 0) { userDesc.password._buffer = (IDL_octet *)(curptr + inputPosition); inputPosition += passwordLength; userDesc.password._length = passwordLength - 1; // The authentication functions expect the non-null terminated length } else { userDesc.password._buffer = NULL; userDesc.password._length = 0; } // Copy 2nd Parameter datasourceLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(datasourceLength); if (datasourceLength > 0) { maxCopyLen = _min(sizeof(inContext.datasource),datasourceLength); strncpy(inContext.datasource,(curptr+inputPosition),maxCopyLen); inContext.datasource[maxCopyLen-1] = '\0'; inputPosition += datasourceLength; } else inContext.datasource[0] = '\0'; catalogLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(catalogLength); if (catalogLength > 0) { maxCopyLen = _min(sizeof(inContext.catalog),catalogLength); strncpy(inContext.catalog,(curptr+inputPosition),maxCopyLen); inContext.catalog[maxCopyLen-1] = '\0'; inputPosition += catalogLength; } else inContext.catalog[0] = '\0'; schemaLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(schemaLength); if (schemaLength > 0) { maxCopyLen = _min(sizeof(inContext.schema),schemaLength); strncpy(inContext.schema, (curptr + inputPosition), maxCopyLen); inContext.schema[maxCopyLen-1] = '\0'; inputPosition += schemaLength; } else inContext.schema[0] = '\0'; locationLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(locationLength); if (locationLength > 0) { maxCopyLen = _min(sizeof(inContext.location),locationLength); strncpy(inContext.location,(curptr + inputPosition),maxCopyLen); inContext.location[maxCopyLen-1] = '\0'; inputPosition += locationLength; } else inContext.location[0] = '\0'; userRoleLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(userRoleLength); if (userRoleLength > 0) { maxCopyLen = _min(sizeof(inContext.userRole),userRoleLength); strncpy(inContext.userRole, (curptr + inputPosition), maxCopyLen); inContext.userRole[maxCopyLen-1] = '\0'; inputPosition += userRoleLength; } else inContext.userRole[0] = '\0'; // copy accessMode inContext.accessMode = *(IDL_short *)(curptr+inputPosition); inputPosition += sizeof(inContext.accessMode); // copy autoCommit inContext.autoCommit = *(IDL_short *)(curptr+inputPosition); inputPosition += sizeof(inContext.autoCommit); // copy queryTimeoutSec inContext.queryTimeoutSec = *(IDL_long *)(curptr+inputPosition); inputPosition += sizeof(inContext.queryTimeoutSec); // copy idleTimeoutSec inContext.idleTimeoutSec = *(IDL_long *)(curptr+inputPosition); inputPosition += sizeof(inContext.idleTimeoutSec); // copy loginTimeoutSec inContext.loginTimeoutSec = *(IDL_long *)(curptr+inputPosition); inputPosition += sizeof(inContext.loginTimeoutSec); // copy txnIsolationLevel inContext.txnIsolationLevel = *(IDL_short *)(curptr+inputPosition); inputPosition += sizeof(inContext.txnIsolationLevel); //copy rowSetSize inContext.rowSetSize = *(IDL_short *)(curptr+inputPosition); inputPosition += sizeof(inContext.rowSetSize); // copy diagnosticFlag inContext.diagnosticFlag = *(IDL_short *)(curptr+inputPosition); inputPosition += sizeof(inContext.diagnosticFlag); // copy processId inContext.processId = *(IDL_unsigned_long *)(curptr+inputPosition); inputPosition += sizeof(inContext.processId); // copy computerName computerNameLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(computerNameLength); if (computerNameLength > 0) { maxCopyLen = _min(sizeof(inContext.computerName),computerNameLength); strncpy(inContext.computerName, (curptr + inputPosition), maxCopyLen); inContext.computerName[maxCopyLen-1] = '\0'; inputPosition += computerNameLength; } else inContext.computerName[0] = '\0'; // copy windowTextLength windowTextLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(windowTextLength); if (windowTextLength > 0) { inContext.windowText = (IDL_char *)(curptr+inputPosition); inputPosition += windowTextLength; } else inContext.windowText = NULL; // copy ctxACP inContext.ctxACP = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(inContext.ctxACP); // copy ctxDataLang inContext.ctxDataLang = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(inContext.ctxDataLang); // copy ctxErrorLang inContext.ctxErrorLang = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(inContext.ctxErrorLang); // copy ctxCtrlInferNCHAR inContext.ctxCtrlInferNCHAR = *(IDL_short *)(curptr + inputPosition); inputPosition += sizeof(inContext.ctxCtrlInferNCHAR); // copy cpuToUse inContext.cpuToUse = *(IDL_short *)(curptr + inputPosition); inputPosition += sizeof(inContext.cpuToUse); // copy cpuToUseEnd inContext.cpuToUseEnd = *(IDL_short *)(curptr + inputPosition); inputPosition += sizeof(inContext.cpuToUseEnd); // copy connectOptions connectOptionsLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(connectOptionsLength); if (connectOptionsLength > 0) { inContext.connectOptions = (IDL_char *)(curptr+inputPosition); inputPosition += connectOptionsLength; } else inContext.connectOptions = NULL; // copy versionList Length inContext.clientVersionList._length = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(inContext.clientVersionList._length); if(inContext.clientVersionList._length > 0) { sts = CEE_TMP_ALLOCATE(call_id_, sizeof(VERSION_def) * inContext.clientVersionList._length, (void **)&inContext.clientVersionList._buffer); if(sts != CEE_SUCCESS) { //LCOV_EXCL_START strcpy( errStrBuf2, "odbcs_srvr.cpp"); strcpy( errStrBuf3, "SQLCONNECT_IOMessage"); strcpy( errStrBuf4, "CEE_TMP_ALLOCATE"); sprintf( errStrBuf5, "Failed to get <%d> bytes", sizeof(VERSION_def) * inContext.clientVersionList._length); logError( NO_MEMORY, SEVERITY_MAJOR, CAPTURE_ALL + PROCESS_STOP ); //LCOV_EXCL_STOP } memset(inContext.clientVersionList._buffer, 0, inContext.clientVersionList._length*sizeof(VERSION_def)); versionPtr = inContext.clientVersionList._buffer; for (int i=0; i < inContext.clientVersionList._length; i++) { // copy componentId versionPtr->componentId = *(IDL_short *)(curptr + inputPosition); inputPosition += sizeof(versionPtr->componentId); // copy majorVersion versionPtr->majorVersion = *(IDL_short *)(curptr + inputPosition); inputPosition += sizeof(versionPtr->majorVersion); // copy minorVersion versionPtr->minorVersion = *(IDL_short *)(curptr + inputPosition); inputPosition += sizeof(versionPtr->minorVersion); // copy buildId versionPtr->buildId = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(versionPtr->buildId); // Get the next versionlist values versionPtr++; } } // Copy 3rd Parameter // copy dailogueId dialogueId = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(dialogueId); inContext.inContextOptions1 = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(inContext.inContextOptions1); inContext.inContextOptions2 = *(IDL_unsigned_long *)(curptr + inputPosition); inputPosition += sizeof(inContext.inContextOptions2); inContext.sessionName[0] = '\0'; if(inContext.inContextOptions1 & INCONTEXT_OPT1_SESSIONNAME) { sessionNameLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(sessionNameLength); maxCopyLen = _min(sizeof(inContext.sessionName),sessionNameLength); if(maxCopyLen > 0) { strncpy(inContext.sessionName,(IDL_char *)(curptr+inputPosition),maxCopyLen); inContext.sessionName[maxCopyLen -1] = '\0'; inputPosition += sessionNameLength; } } if(inContext.inContextOptions1 & INCONTEXT_OPT1_CLIENT_USERNAME) { clientUserNameLength = *(IDL_long *)(curptr + inputPosition); inputPosition += sizeof(clientUserNameLength); if (clientUserNameLength > 0) { inContext.clientUserName = (IDL_char *)(curptr + inputPosition); inputPosition += clientUserNameLength; } else inContext.clientUserName = NULL; } else inContext.clientUserName = NULL; odbc_SQLSvc_InitializeDialogue_ame_( objtag_ , call_id_ , &userDesc , &inContext , dialogueId ); }
void SQLEXECUTE_IOMessage( /* In */ CEE_tag_def objtag_ , /* In */ const CEE_handle_def *call_id_ , /* In */ short operation_id ) { CInterface* pnode = (CInterface*)objtag_; CEE_status sts = CEE_SUCCESS; CEE_status retcode; IDL_char *curptr; IDL_unsigned_long i; DIALOGUE_ID_def dialogueId = 0; IDL_long sqlAsyncEnable = 0; IDL_long queryTimeout = 0; IDL_long inputRowCnt = 0; IDL_long maxRowsetSize = 0; IDL_long sqlStmtType = 0; Long stmtHandle = 0; IDL_long stmtHandleKey = 0; IDL_long stmtType = 0; IDL_long sqlStringLength = 0; IDL_string sqlString = NULL; IDL_long sqlStringCharset = 0; IDL_long cursorLength = 0; IDL_string cursorName = NULL; IDL_long cursorCharset = 0; IDL_long stmtLength = 0; IDL_char *stmtLabel = NULL; IDL_long stmtLabelCharset = 0; IDL_long stmtExplainLabelLength = 0; IDL_string stmtExplainLabel = NULL; IDL_long inValuesLength = 0; BYTE *inValues = NULL; IDL_long transactionIDLength = 0; // JDBC is the only one that will use this to join a transaction IDL_long_long transactionID = 0; // JDBC is the only one that will use this to join a transaction IDL_long holdableCursor = SQL_NONHOLDABLE; //default IDL_long inputPosition = 0; IDL_short ix; curptr = pnode->r_buffer(); dialogueId = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(dialogueId); // to support SAP holdable cursor, the driver overload this field with the value of holdableCursor // currently the sqlAsyncEnable is not used. //sqlAsyncEnable = *(IDL_long*)(curptr+inputPosition); holdableCursor = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlAsyncEnable); queryTimeout = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(queryTimeout); inputRowCnt = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(inputRowCnt); maxRowsetSize = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(maxRowsetSize); sqlStmtType = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlStmtType); stmtHandleKey = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(IDL_long); stmtHandle = 0; if( stmtHandleKey > 0 ) stmtHandle = srvrGlobal->stmtHandleMap[stmtHandleKey]; stmtType = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtType); sqlStringLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlStringLength); if (sqlStringLength > 0) { sqlString = curptr+inputPosition; inputPosition += sqlStringLength; sqlStringCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(sqlStringCharset); } cursorLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(cursorLength); if (cursorLength > 0) { cursorName = curptr+inputPosition; inputPosition += cursorLength; cursorCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(cursorCharset); } stmtLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtLength); if (stmtLength > 0) { stmtLabel = curptr+inputPosition; inputPosition += stmtLength; stmtLabelCharset = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtLabelCharset); } stmtExplainLabelLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(stmtExplainLabelLength); if (stmtExplainLabelLength > 0) { stmtExplainLabel = curptr+inputPosition; inputPosition += stmtExplainLabelLength; } inValuesLength = *(IDL_long*)(curptr+inputPosition); inputPosition += sizeof(inValuesLength); if (inValuesLength > 0) { inValues = (BYTE *) curptr+inputPosition; inputPosition += inValuesLength; } transactionIDLength = *(IDL_unsigned_long*)(curptr+inputPosition); inputPosition += sizeof(transactionIDLength); if(transactionIDLength > 0) { //LCOV_EXCL_START //LCOV_EXCL_STOP if(transactionIDLength == 5) transactionID = *(IDL_long*)(curptr+inputPosition); if(transactionIDLength == 9) transactionID = *(IDL_long_long*)(curptr+inputPosition); inputPosition += transactionIDLength; } if( operation_id == SRVR_API_SQLEXECUTE2) { odbc_SQLSrvr_Execute2_ame_( objtag_, call_id_, dialogueId, sqlAsyncEnable, queryTimeout, inputRowCnt, sqlStmtType, stmtHandle, cursorName, cursorCharset, inValuesLength, inValues, 0, // Sql Query Type (used for execdirect calls) 0, // output Descriptor Length (used for execdirect calls) NULL, // output Descriptor (used for execdirect calls) maxRowsetSize, //For DBT to obtain the Rowlength from Driver transactionID, // JDBC sends this to join an existing transaction for SPJ calls holdableCursor ); } /* if operation_id == SRVR_API_SQLEXECUTE2 */ else if( operation_id == SRVR_API_SQLEXECDIRECT) { odbc_SQLSrvr_ExecDirect_ame_( objtag_, call_id_, dialogueId, stmtLabel, cursorName, stmtExplainLabel, stmtType, sqlStmtType, sqlString, sqlAsyncEnable, queryTimeout, inputRowCnt, transactionID, // JDBC sends this to join an existing transaction for SPJ calls holdableCursor ); } /* if operation_id == SRVR_API_SQLEXECDIRECT */ } // SQLEXECUTE_IOMessage()