INT32 mainEntry ( INT32 argc, CHAR **argv ) { INT32 rc = SDB_OK ; BOOLEAN isFull = TRUE ; util_sdb_settings setting ; setting.on_init = on_init ; setting.on_preparation = on_preparation ; setting.on_main = on_main ; setting.on_end = on_end ; sdbEnablePD( LOGPATH ) ; setPDLevel( PDINFO ) ; APPENDARGSTRING( utilSdbObj, OPTION_HOSTNAME, OPTION_HOSTNAME ",s", EXPLAIN_HOSTNAME, FALSE, OSS_MAX_HOSTNAME, DEFAULT_HOSTNAME ) ; APPENDARGSTRING( utilSdbObj, OPTION_SVCNAME, OPTION_SVCNAME ",p", EXPLAIN_SVCNAME, FALSE, OSS_MAX_SERVICENAME, DEFAULT_SVCNAME ) ; APPENDARGSTRING( utilSdbObj, OPTION_USER, OPTION_USER ",u", EXPLAIN_USER, FALSE, -1, "\0" ) ; APPENDARGSTRING( utilSdbObj, OPTION_PASSWORD, OPTION_PASSWORD ",w", EXPLAIN_PASSWORD, FALSE, -1, "\0" ) ; APPENDARGCHAR ( utilSdbObj, OPTION_DELCHAR, OPTION_DELCHAR ",a", EXPLAIN_DELCHAR, FALSE, '"' ) ; APPENDARGCHAR ( utilSdbObj, OPTION_DELFIELD, OPTION_DELFIELD ",e", EXPLAIN_DELFIELD, FALSE, ',' ) ; APPENDARGCHAR ( utilSdbObj, OPTION_DELRECORD, OPTION_DELRECORD ",r", EXPLAIN_DELRECORD, FALSE, '\n' ) ; APPENDARGSTRING( utilSdbObj, OPTION_COLLECTSPACE, OPTION_COLLECTSPACE ",c", EXPLAIN_COLLECTSPACE, TRUE, -1, NULL ) ; APPENDARGSTRING( utilSdbObj, OPTION_COLLECTION, OPTION_COLLECTION ",l", EXPLAIN_COLLECTION, TRUE, -1, NULL ) ; APPENDARGINT ( utilSdbObj, OPTION_INSERTNUM, OPTION_INSERTNUM ",n", EXPLAIN_INSERTNUM, FALSE, 1, 100000, 100 ) ; APPENDARGSTRING( utilSdbObj, OPTION_FILENAME, OPTION_FILENAME, EXPLAIN_FILENAME, TRUE, -1, NULL ) ; APPENDARGSWITCH( utilSdbObj, OPTION_TYPE, OPTION_TYPE, EXPLAIN_TYPE, FALSE, SDBIMPORT_TYPE_STR, 2, MIGIMPRT_CSV ) ; APPENDARGSTRING( utilSdbObj, OPTION_FIELD, OPTION_FIELD, EXPLAIN_FIELDS, FALSE, -1, NULL ) ; APPENDARGBOOL ( utilSdbObj, OPTION_HEADERLINE, OPTION_HEADERLINE, EXPLAIN_HEADERLINE, FALSE, FALSE ) ; APPENDARGBOOL ( utilSdbObj, OPTION_SPARSE, OPTION_SPARSE, EXPLAIN_SPARSE, FALSE, TRUE ) ; APPENDARGBOOL ( utilSdbObj, OPTION_EXTRA, OPTION_EXTRA, EXPLAIN_EXTRA, FALSE, FALSE ) ; APPENDARGBOOL ( utilSdbObj, OPTION_LINEPRIORITY, OPTION_LINEPRIORITY, EXPLAIN_LINEPRIORITY, FALSE, TRUE ) ; APPENDARGBOOL ( utilSdbObj, OPTION_ERRORSTOP, OPTION_ERRORSTOP, EXPLAIN_ERRORSTOP, FALSE, FALSE ) ; APPENDARGBOOL ( utilSdbObj, OPTION_FORCE, OPTION_FORCE, EXPLAIN_FORCE, FALSE, FALSE ) ; #ifdef SDB_SSL APPENDARGBOOL ( utilSdbObj, OPTION_SSL, OPTION_SSL, EXPLAIN_SSL, FALSE, FALSE ) ; #endif rc = utilSdbObj.init( setting, &isFull ) ; if ( rc ) { goto error ; } rc = utilSdbObj.run( argc, argv, "sdbimprt version" ) ; if ( rc ) { goto error ; } done : if ( rc ) { if ( rc != SDB_PMD_HELP_ONLY && rc != SDB_PMD_VERSION_ONLY ) { ossPrintf ( "Import Failed"OSS_NEWLINE ) ; } } else { ossPrintf ( "Import Successfully"OSS_NEWLINE ) ; } if ( rc != SDB_PMD_HELP_ONLY && rc != SDB_PMD_VERSION_ONLY ) { ossPrintf ( "Detail in log path: %s"OSS_NEWLINE, getDialogName() ) ; PD_LOG ( PDEVENT, "Import Completed" ) ; } return SDB_OK == rc ? 0 : migRC2ShellRC( rc ) ; error : goto done ; }
INT32 pmdThreadMainEntry( INT32 argc, CHAR** argv ) { INT32 rc = SDB_OK ; pmdKRCB *krcb = pmdGetKRCB() ; CHAR currentPath[ OSS_MAX_PATHSIZE + 1 ] = { 0 } ; CHAR dialogPath[ OSS_MAX_PATHSIZE + 1 ] = { 0 } ; CHAR dialogFile[ OSS_MAX_PATHSIZE + 1 ] = { 0 } ; INT32 delSig[] = { 17, 0 } ; // del SIGCHLD CHAR verText[ OSS_MAX_PATHSIZE + 1 ] = { 0 } ; po::variables_map vm ; rc = initArgs( argc, argv, vm ) ; if ( rc ) { if ( SDB_PMD_HELP_ONLY == rc || SDB_PMD_VERSION_ONLY == rc ) { rc = SDB_OK ; } goto done ; } rc = ossGetEWD( currentPath, OSS_MAX_PATHSIZE ) ; if ( rc ) { std::cout << "Get current path failed: " << rc << std::endl ; goto error ; } ossChDir( currentPath ) ; rc = utilBuildFullPath( currentPath, SDBCM_LOG_PATH, OSS_MAX_PATHSIZE, dialogPath ) ; if ( rc ) { std::cout << "Build dialog path failed: " << rc << std::endl ; goto error ; } rc = ossMkdir( dialogPath ) ; if ( rc && SDB_FE != rc ) { std::cout << "Create dialog dir: " << dialogPath << " failed: " << rc << std::endl ; goto error ; } rc = utilBuildFullPath( dialogPath, SDBCM_DIALOG_FILE_NAME, OSS_MAX_PATHSIZE, dialogFile ) ; if ( rc ) { std::cout << "Build dialog path failed: " << rc << std::endl ; goto error ; } sdbEnablePD( dialogFile ) ; ossSprintVersion( "Version", verText, OSS_MAX_PATHSIZE, FALSE ) ; PD_LOG( PDEVENT, "Start cm[%s]...", verText) ; rc = sdbGetOMAgentOptions()->init( currentPath ) ; if ( rc ) { PD_LOG( PDERROR, "Failed to init config, rc: %d", rc ) ; goto error ; } if ( vm.count( PMD_OPTION_CURUSER ) ) { sdbGetOMAgentOptions()->setCurUser() ; } if ( vm.count( PMD_OPTION_STANDALONE ) ) { sdbGetOMAgentOptions()->setStandAlone() ; if ( vm.count( PMD_OPTION_ALIVE_TIME ) ) { UINT32 timeout = vm[ PMD_OPTION_ALIVE_TIME ].as<INT32>() ; sdbGetOMAgentOptions()->setAliveTimeout( timeout ) ; } } if ( vm.count( PMD_OPTION_PORT ) ) { string svcname = vm[ PMD_OPTION_PORT ].as<string>() ; sdbGetOMAgentOptions()->setCMServiceName( svcname.c_str() ) ; pmdSetLocalPort( (UINT16)ossAtoi( svcname.c_str() ) ) ; } setPDLevel( sdbGetOMAgentOptions()->getDiagLevel() ) ; { string configs ; sdbGetOMAgentOptions()->toString( configs ) ; PD_LOG( PDEVENT, "All configs:\n%s", configs.c_str() ) ; } pmdSetDBRole( SDB_ROLE_OMA ) ; rc = pmdEnableSignalEvent( dialogPath, (PMD_ON_QUIT_FUNC)pmdOnQuit, delSig ) ; PD_RC_CHECK ( rc, PDERROR, "Failed to enable trap, rc: %d", rc ) ; #if defined( _LINUX ) signal( SIGCHLD, SIG_IGN ) ; #endif // _LINUX PMD_REGISTER_CB( sdbGetOMAgentMgr() ) ; rc = krcb->init() ; PD_RC_CHECK( rc, PDERROR, "Failed to init krcb, rc: %d", rc ) ; { EDUID agentEDU = PMD_INVALID_EDUID ; pmdEDUMgr *eduMgr = krcb->getEDUMgr() ; rc = eduMgr->startEDU ( EDU_TYPE_PIPESLISTENER, (void*)sdbGetOMAgentOptions()->getCMServiceName(), &agentEDU ) ; PD_RC_CHECK( rc, PDERROR, "Start PIPELISTENER failed, rc: %d", rc ) ; rc = eduMgr->waitUntil( agentEDU, PMD_EDU_RUNNING ) ; PD_RC_CHECK( rc, PDERROR, "Wait pipe listener to running " "failed, rc: %d", rc ) ; } #if defined (_LINUX) { CHAR pmdProcessName [ OSS_RENAME_PROCESS_BUFFER_LEN + 1 ] = {0} ; ossSnprintf ( pmdProcessName, OSS_RENAME_PROCESS_BUFFER_LEN, "%s(%s)", utilDBTypeStr( pmdGetDBType() ), sdbGetOMAgentOptions()->getCMServiceName() ) ; ossEnableNameChanges ( argc, argv ) ; ossRenameProcess ( pmdProcessName ) ; } #endif // _LINUX while ( PMD_IS_DB_UP() ) { ossSleepsecs ( 1 ) ; } rc = krcb->getShutdownCode() ; done: PMD_SHUTDOWN_DB( rc ) ; pmdSetQuit() ; krcb->destroy () ; PD_LOG ( PDEVENT, "Stop programme, exit code: %d", krcb->getShutdownCode() ) ; return rc == SDB_OK ? 0 : 1 ; error: goto done ; }
INT32 mainEntry( INT32 argc, CHAR** argv ) { INT32 rc = SDB_OK ; CHAR dialogFile[ OSS_MAX_PATHSIZE + 1 ] = {0} ; cCMService svc; cPmdDaemon daemon( PMDDMN_SVCNAME_DEFAULT ) ; BOOLEAN asProc = FALSE ; po::variables_map vm ; rc = ossGetEWD( dialogFile, OSS_MAX_PATHSIZE ) ; if ( rc ) { ossPrintf( "Failed to get working directory, rc: %d"OSS_NEWLINE, rc ) ; goto error ; } rc = engine::utilCatPath( dialogFile, OSS_MAX_PATHSIZE, SDBCM_LOG_PATH ) ; if ( rc ) { ossPrintf( "Failed to make dialog path, rc: %d"OSS_NEWLINE, rc ) ; goto error ; } rc = ossMkdir( dialogFile, OSS_CREATE|OSS_READWRITE ) ; if ( rc && SDB_FE != rc ) { ossPrintf( "Create dialog dir[%s] failed, rc: %d"OSS_NEWLINE, dialogFile, rc ) ; goto error ; } rc = engine::utilCatPath( dialogFile, OSS_MAX_PATHSIZE, PMDDMN_DIALOG_FILE_NAME ) ; if ( rc ) { ossPrintf( "Failed to make dialog path, rc: %d"OSS_NEWLINE, rc ) ; goto error ; } rc = initArgs( argc, argv, vm, asProc ) ; if ( rc ) { if ( SDB_PMD_VERSION_ONLY == rc || SDB_PMD_HELP_ONLY == rc ) { rc = SDB_OK ; } goto error ; } sdbEnablePD( dialogFile ) ; setPDLevel( PDINFO ) ; PD_LOG( PDEVENT, "Start cmd[Ver: %d.%d, Release: %d, Build: %s]...", SDB_ENGINE_VERISON_CURRENT, SDB_ENGINE_SUBVERSION_CURRENT, SDB_ENGINE_RELEASE_CURRENT, SDB_ENGINE_BUILD_TIME ) ; svc.setArgInfo( argc, argv ) ; rc = svc.init() ; PD_RC_CHECK( rc, PDERROR, "Failed to init cm(rc=%d)", rc ) ; rc = daemon.addChildrenProcess( &svc ) ; PD_RC_CHECK( rc, PDERROR, "Failed to add childrenProcess(rc=%d)", rc ) ; rc = daemon.init(); if ( rc != SDB_OK ) { ossPrintf( "Failed to init daemon process(rc=%d)", rc ) ; goto error; } rc = daemon.run( argc, argv, asProc ); PD_RC_CHECK( rc, PDERROR, "Execute failed(rc=%d)", rc ) ; done: daemon.stop() ; PD_LOG( PDEVENT, "Stop programme." ) ; return SDB_OK == rc ? 0 : 1 ; error: goto done ; }