Exemple #1
0
bool ContextBase::testCmdArgs(int argc, char **argv) {
	_argc = argc;
	_argv = argv;
	_skipFirstArgs = 1;
	_origProgramName = argv[0];
	setProgram(_programNames[_origProgramName]);
	_argsProcessed.resize(_argc - _skipFirstArgs, false);

	if (!parseCmdArgs(argc, argv, 1) || getShowHelp() || !isValidState()) {
		return false;
	}
	return true;
}
Exemple #2
0
bool ContextBase::testCmdArgs(int argc, char **argv) {
	_argc = argc;
	_argv = argv;
	_skipFirstArgs = 1;
	setProgram(_programNames[argv[0]]);
	_argsProcessed.resize(_argc - _skipFirstArgs, false);

	if (!parseCmdArgs(argc, argv, 1) || getShowHelp() || !isValidState()) {
		if (!_errorMsg.empty()) {
			cerr <<_errorMsg << endl;
		}
		return false;
	}
	return true;
}
    DrachtioController::DrachtioController( int argc, char* argv[] ) : m_bDaemonize(false), m_bLoggingInitialized(false),
        m_configFilename(DEFAULT_CONFIG_FILENAME) {
        
        if( !parseCmdArgs( argc, argv ) ) {
            usage() ;
            exit(-1) ;
        }
        
        m_Config = boost::make_shared<DrachtioConfig>( m_configFilename.c_str() ) ;

        if( !m_Config->isValid() ) {
            exit(-1) ;
        }
        this->installConfig() ;

#ifdef DEBUG
        json_set_alloc_funcs(my_json_malloc, my_json_free);
#endif

    }
Exemple #4
0
int main( int argc, char** argv )
{
#ifdef WIN32
	if( (signal(SIGINT,sig_int) == SIG_ERR) || (signal(SIGTERM,sig_int) == SIG_ERR) )
		exit(-1);
#else
	if( (signal(SIGINT,sig_int) == SIG_ERR) || (signal(SIGTERM,sig_int) == SIG_ERR) || (signal(SIGABRT,sig_int_nothing) == SIG_ERR))
		exit(-1);

	if(signal(SIGTERM, sig_int) == SIG_ERR)
		exit(-1);
#endif

	try
	{
#ifndef WIN32
		//频繁的内存申请/释放导致大量缺页中断
		mallopt(M_MMAP_MAX, 0); // 禁止malloc调用mmap分配内存
		mallopt(M_TRIM_THRESHOLD, -1); // 禁止内存紧缩
#endif
		CThreadFactory::initialize();
		CCException::initStackTrace();
		parseCmdArgs(argc,argv);
		if ( !initFrameWorkLib(argv[0]) )
			ThrowException<CCException>("init FrameWorkLib Error!");

		g_DaServer = CDAServerPtr::createInstance();
		if( !g_DaServer->init(getFrameWorkProf()) )
		{
			log_error("Failed to call DAServer::init() \n");
			return -1;
		}
		g_DaServer->setArg(argc, argv);

		g_pSystemLog = new CSystemLog();
		const char* logdir = NULL;
		if ( !getCmdArgs('l',logdir) )
			logdir = "./log";
		//写本地文件
		g_pSystemLogOut = new CSystemLogOutputStream(logdir);
		if ( !g_pSystemLogOut->init(g_DaServer) )
			ThrowException<CCException>("init CLocalLogOutputStream Error!");
		g_pSystemLog->addFileLogOutput(g_pSystemLogOut.get());
		g_pSystemLog->setLogPath(logdir);
		g_pSystemLogOut->start();

		g_pDllMgr = new CProgramDllMgr();
	
		const char* szdll = NULL;
		if ( !getCmdArgs('d',szdll) )
			ThrowException<CCException>("init dll Error!");
		g_pDllMgr->loadDll(szdll);

		g_DaServer->registeTimeTask(g_pDllMgr.get(),0,0,100 * 1000);

		g_DaServer->addSessionHandler(new CSessionHandler());

		g_DaServer->setServerHandler(new CServerHandler());
		
		if (!g_DaServer->initService())
		{
			log_error("Failed to call DAServer::initService() \n");
			return -1;
		}

		//记录加载完成标志
		#ifndef WINDOWS
			uint16 npid = getpid();
			char buffer[255] ={ 0 };
			sprintf(buffer, "%s/%d.loadfinish", logdir, npid);
			FILE *logfile = NULL;
			if ((logfile = fopen(buffer, "a")) != NULL)
			{
				fclose(logfile);
			}
		#endif

		g_DaServer->run();
	}
	catch(CDAException& e)
	{
		log_warning("Catch CDAException %s", e.printStackTrace());
		if ( g_DaServer != NULL )
			g_DaServer->stop();
		if (g_pDllMgr != NULL)
		{
			g_pDllMgr->stopServer();
			g_pDllMgr->onServerStop();
		}
		if (g_pSystemLogOut != NULL)
			g_pSystemLogOut->stop();
		uninitFrameWorkLib();
		CCException::cleanupStackTrace();
		return -1;
	}    
	catch (CCException& e)
	{
		log_warning("catch ccexception[%s][%s]",e.what(), e.printStackTrace());
		if ( g_DaServer != NULL )
			g_DaServer->stop();
		if (g_pDllMgr != NULL)
		{
			g_pDllMgr->stopServer();
			g_pDllMgr->onServerStop();
		}
		if (g_pSystemLogOut != NULL)
			g_pSystemLogOut->stop();
		uninitFrameWorkLib();
		CCException::cleanupStackTrace();
		return -1;
	}
	catch (exception &e)
	{
		log_warning("catch exception[%s]",e.what());
		if ( g_DaServer != NULL )
			g_DaServer->stop();
		if (g_pDllMgr != NULL)
		{
			g_pDllMgr->stopServer();
			g_pDllMgr->onServerStop();
		}
		if (g_pSystemLogOut != NULL)
			g_pSystemLogOut->stop();
		uninitFrameWorkLib();
		CCException::cleanupStackTrace();
		return -1;
	}
	catch(...)
	{
		log_warning("catch ...");

		if(g_DaServer != NULL)
			g_DaServer->stop();
		if (g_pDllMgr != NULL)
		{
			g_pDllMgr->stopServer();
			g_pDllMgr->onServerStop();
		}
		if (g_pSystemLogOut != NULL)
			g_pSystemLogOut->stop();
		uninitFrameWorkLib();
		CCException::cleanupStackTrace();
		return -1;
	}

	if (g_pDllMgr != NULL)
	{
		g_pDllMgr->stopServer();
	}
	log_info("Program End!");
	if (g_pSystemLogOut != NULL)
		g_pSystemLogOut->stop();
	uninitFrameWorkLib();
	CCException::cleanupStackTrace();
	return 0;
}
int main(int argc, char **argv)
{
    std::string *flagValues; //Holds values passed from the cmd line
    std::ifstream inputFile;
    std::ofstream outputFile;
    
    try
    {
        //STEP 1: PROCESS COMMAND LINE ARGUMENTS
        
        //Parses the cmd args
        flagValues = parseCmdArgs(argc, argv);
        
        //TODO: Fills in unspecified flags with default values
        
        
        //STEP 2: CLEAN THE SOURCE FILE
        
        //Opens the files
        inputFile.open(flagValues[NUM_FLAGS]);
        outputFile.open(flagValues[CLEAN_FILE_FLAG]);
        if(!inputFile.is_open()); //throw an error
        if(!outputFile.is_open()); //throw an error
        
        //Initializes the cleaner object and 
        CodeCleaner cleaner("~~", "/~", "~/");
        cleaner.clean(inputFile, outputFile);
        
        //Closes the files
        inputFile.close();
        outputFile.close();
        
        
        
        //STEP 3: TOKENIZE THE CLEANED INPUT
        
        //Gets the list of keywords are their tokens
        std::vector<std::pair<std::string, std::string>> keywords = getKeywords(KW_FILE);
        
        //Opens the files
        inputFile.open(flagValues[CLEAN_FILE_FLAG]);
        outputFile.open(flagValues[TOKEN_FILE_FLAG]);
        if(!inputFile.is_open()); //throw an error
        if(!outputFile.is_open()); //throw an error
        
        //Initializes the tokenizer object and tokenizes the clean file
        ProseTokenizer tokenizer(keywords);
        tokenizer.tokenize(inputFile, outputFile);
        
        
        
        //STEP 4: CREATE PARSE TREES AND CONVERT THEM TO ASSEMBLY
        
    }
    
    catch(std::regex_error e)
    {
        std::cout << "regex_error code: " << e.code() << std::endl;
    }
    
    catch(std::exception& e)
    {
        std::cout << e.what() << std::endl;
    }
    
    //Frees dynamically allocated memory
    delete[] flagValues;
    
    //Closes all files
    inputFile.close();
    outputFile.close();
    
    return 0;
}