Example #1
0
TEST(TS_SU_LOGIN, valid) {
	RzTest test;
	TestConnectionChannel game(TestConnectionChannel::Client, CONFIG_GET()->game.ip, CONFIG_GET()->game.port, false);

	game.addCallback([](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		ASSERT_EQ(TestConnectionChannel::Event::Connection, event.type);
		TS_SU_LOGIN loginPacket;
		TS_MESSAGE::initMessage(&loginPacket);

		strcpy(loginPacket.server_name, "game002");
		channel->sendPacket(&loginPacket);
	});

	game.addCallback([](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		const TS_US_LOGIN_RESULT* packet = AGET_PACKET(TS_US_LOGIN_RESULT);

		EXPECT_EQ(TS_RESULT_SUCCESS, packet->result);

		channel->closeSession();
	});

	game.start();
	test.addChannel(&game);
	test.run();
}
Example #2
0
TEST(TS_GA_CLIENT_LOGIN, long_account) {
	RzTest test;
	TestConnectionChannel game(TestConnectionChannel::Client, CONFIG_GET()->game.ip, CONFIG_GET()->game.port, false);

	addGameLoginScenario(game,
	                     7,
	                     "Server name 10",
	                     "http://www.example.com/index10.html",
	                     true,
	                     "127.0.0.1",
	                     4517,
	                     [](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		                     AuthServer::sendClientLogin(
		                         channel, "61_chars_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 'a');
	                     });

	game.addCallback([](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		const TS_AG_CLIENT_LOGIN* packet = AGET_PACKET(TS_AG_CLIENT_LOGIN);

		EXPECT_EQ(TS_RESULT_ACCESS_DENIED, packet->result);
		EXPECT_STREQ("61_chars_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", packet->account);
		EXPECT_EQ(0, packet->nAccountID);
		EXPECT_EQ(0, packet->nPCBangUser);
		EXPECT_EQ(0, packet->nEventCode);
		EXPECT_EQ(0, packet->nAge);
		EXPECT_EQ(0, packet->nContinuousPlayTime);
		EXPECT_EQ(0, packet->nContinuousLogoutTime);

		channel->closeSession();
	});

	game.start();
	test.addChannel(&game);
	test.run();
}
Example #3
0
TEST(TS_CA_VERSION, nonnullterminated) {
	RzTest test;
	TestConnectionChannel auth(TestConnectionChannel::Client, CONFIG_GET()->auth.ip, CONFIG_GET()->auth.port, true);

	auth.addCallback([](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		ASSERT_EQ(TestConnectionChannel::Event::Connection, event.type);
		TS_CA_VERSION version;
		TS_MESSAGE::initMessage(&version);
		memset(version.szVersion, 1, sizeof(version.szVersion));
		channel->sendPacket(&version);
		strcpy(version.szVersion, "INFO");
		channel->sendPacket(&version);
	});

	auth.addCallback([](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		TS_SC_RESULT packet;
		DESERIALIZE_PACKET(packet, EPIC_LATEST);

		uint32_t versionHex = ((uint32_t) packet.value) ^ 0xADADADAD;

		EXPECT_NE(0, versionHex);
		EXPECT_NE(INT32_MIN, versionHex);
		EXPECT_NE(INT32_MAX, versionHex);
		EXPECT_NE(UINT32_MAX, versionHex);
		EXPECT_EQ(0, packet.result);

		channel->closeSession();
	});

	test.addChannel(&auth);
	auth.start();
	test.run();
}
Example #4
0
TEST(TS_CA_VERSION, playercount) {
	RzTest test;
	TestConnectionChannel auth(TestConnectionChannel::Client, CONFIG_GET()->auth.ip, CONFIG_GET()->auth.port, true);

	auth.addCallback([](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		ASSERT_EQ(TestConnectionChannel::Event::Connection, event.type);
		TS_CA_VERSION version;
		TS_MESSAGE::initMessage(&version);
		strcpy(version.szVersion, "TEST");
		channel->sendPacket(&version);
	});

	auth.addCallback([](TestConnectionChannel* channel, TestConnectionChannel::Event event) {
		// const TS_SC_RESULT* packet = AGET_PACKET(TS_SC_RESULT);
		TS_SC_RESULT packet;
		DESERIALIZE_PACKET(packet, EPIC_LATEST);

		int playerCount = packet.value ^ 0xADADADAD;

		EXPECT_EQ(0, playerCount);
		EXPECT_EQ(0, packet.result);

		channel->closeSession();
	});

	test.addChannel(&auth);
	auth.start();
	test.run();
}
Example #5
0
void radiator_loop()
{ 
  temp_t tab [] = {
    DS18B20_COLLECTOR,
    DS18B20_OUTSIDE,
  };

  ds18b20_get_temp_tab(sizeof(tab)/sizeof(temp_t), RESOLUTION_9, 7, tab);
  temp_t outside = MIN(tab[0], tab[1]);

  temp_t read_0 = ds18b20_get_temp(DS18B20_RADIATOR_U, RESOLUTION_11, 7);
  _delay_ms(1000);
  temp_t read_1 = ds18b20_get_temp(DS18B20_RADIATOR_U, RESOLUTION_11, 7);

  temp_t curr = read_1 + (read_1 - read_0) * 16;

  temp_t goal = CONFIG_GET(radiator_goal);
  CONFIG static uint8_t radiator_factor = 24;
  if (outside < goal) goal += (CONFIG_GET(radiator_factor) * ((uint32_t)goal - outside)) >> 4;

  bool dir = curr > goal;
  temp_t diff = dir ? curr - goal : goal - curr;

  valve_state_t amount = (VALVE_STATE_MAX * (uint32_t)diff) >> (8 + 6);
  
  if (dir) valve_close_for(VALVE_RADIATOR, amount);
  else     valve_open_for (VALVE_RADIATOR, amount);
 
  if (valve_closed(VALVE_RADIATOR) || outside > TEMP(15)) // quick dirty hack - father wants radiator in bathroom warm, maybe we can achieve that by heating without pump
    relay_off(RELAY_PUMP_RADIATOR);
  else
    relay_on (RELAY_PUMP_RADIATOR);
}
Example #6
0
void radiator_loop_new()
{
  temp_t tab [] = {
    DS18B20_RADIATOR_U,
    DS18B20_RADIATOR_D,
    DS18B20_HOUSE_S_T,
  };
  
  ds18b20_temp_tab_fill(RESOLUTION_11, 7, tab);
  
  CONFIG static temp_t  ambient_temp = TEMP(23);
  CONFIG static uint8_t heating_f    = 4.0 * 0x10;
  CONFIG static temp_t  storage_off  = TEMP(10);

  temp_t goal = CONFIG_GET(ambient_temp);
  goal += (uint32_t)(tab[0] - tab[1]) * CONFIG_GET(heating_f) / 0x10;
  goal = MIN(goal, tab[2] - storage_off);

  valve_state_t amount = VALVE_STATE_MAX * 5 / 100;
  if (goal > tab[1]) valve_open_for (VALVE_RADIATOR, amount);
  else               valve_close_for(VALVE_RADIATOR, amount);
  
  if (valve_closed(VALVE_RADIATOR))
    relay_off(RELAY_PUMP_RADIATOR);
  else
    relay_on (RELAY_PUMP_RADIATOR);
}
Example #7
0
void Environment::beforeTests() {
	std::string authExec = CONFIG_GET()->authExecutable.get();
	std::string gameReconnectExec = CONFIG_GET()->gameReconnectExecutable.get();
	std::string connectionString = CONFIG_GET()->connectionString.get();

	DbConnectionPool dbConnectionPool;
	DbConnection* connection = dbConnectionPool.getConnection(connectionString.c_str());
	ASSERT_NE(nullptr, connection);
	ASSERT_NE(false, connection->execute("DROP TABLE IF EXISTS account;"));
	ASSERT_NE(false,
	          connection->execute("CREATE TABLE account (\r\n"
	                              "        \"account_id\"    INTEGER NOT NULL,\r\n"
	                              "        \"account\"       VARCHAR(61) NOT NULL,\r\n"
	                              "        \"password\"      VARCHAR(61),\r\n"
	                              "        \"last_login_server_idx\" INTEGER,\r\n"
	                              "        \"server_idx_offset\"     INTEGER,\r\n"
	                              "        \"security_no\"   VARCHAR(61),\r\n"
	                              "        PRIMARY KEY(account_id)\r\n);"));
	connection->setAutoCommit(false);
	// clang-format off
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(0,'test0','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(1,'test1','613b5247e3398350918cb622a3ec19e9',NULL,NULL,'613b5247e3398350918cb622a3ec19e9');"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(2,'test2','613b5247e3398350918cb622a3ec19e9',4,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(3,'test3','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(4,'test4','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(5,'test5','613b5247e3398350918cb622a3ec19e9',11,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(6,'test6','613b5247e3398350918cb622a3ec19e9',12,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(7,'test7','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(8,'test8','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(9,'test9','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(10,'test10','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(11,'test11','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(12,'test12','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(13,'test13','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(14,'test14','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(15,'test15','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(16,'test16','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(17,'test17','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(18,'test18','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(19,'test19','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(20,'test20','613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(21,'test' || char(233),'613b5247e3398350918cb622a3ec19e9',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(1000000001,'testPw47Chars','c8d8079110d491e6d115dc0755c7e5eb',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(1000000002,'testPw60Chars','33410d89b4a115d9ac9c7aaaff255b91',NULL,NULL,NULL);"));
	ASSERT_NE(false, connection->execute("INSERT INTO account VALUES(1000000003,'testPw64Chars','0504f832c91bc39001f67f4209f7f077',NULL,NULL,NULL);"));
	// clang-format on

	connection->endTransaction(true);
	connection->releaseAndClose();

	std::string connectionStringArg = "/auth.db.connectionstring:";
	connectionStringArg += connectionString;

	spawnProcess(4500, authExec.c_str(), 2, "/configfile:./auth-test.opt", connectionStringArg.c_str());
	if(testGameReconnect)
		spawnProcess(4802, gameReconnectExec.c_str(), 1, "/configfile:./rzgamereconnect-test.opt");
}
Example #8
0
template<> void DbQueryJob<GameServer::DB_StorageBinding>::init(DbConnectionPool* dbConnectionPool) {
	createBinding(dbConnectionPool,
				  CONFIG_GET()->game.telecaster.connectionString,
				  "select * from item where account_id = ? AND owner_id = 0 AND auction_id = 0 AND keeping_id = 0",
				  DbQueryBinding::EM_MultiRows);

	addParam("account_id", &InputType::account_id);

	addColumn("sid", &OutputType::sid);
	addColumn("account_id", &OutputType::account_id);
	addColumn("summon_id", &OutputType::summon_id);
	addColumn("idx", &OutputType::idx);
	addColumn("code", &OutputType::code);
	addColumn("cnt", &OutputType::count);
	addColumn("level", &OutputType::level);
	addColumn("enhance", &OutputType::enhance);
	addColumn("ethereal_durability", &OutputType::ethereal_durability);
	addColumn("endurance", &OutputType::endurance);
	addColumn("flag", &OutputType::flag);
	addColumn("gcode", &OutputType::gcode);
	addColumn("wear_info", &OutputType::wear_info);
	addColumn("socket_0", &OutputType::socket, 0);
	addColumn("socket_1", &OutputType::socket, 1);
	addColumn("socket_2", &OutputType::socket, 2);
	addColumn("socket_3", &OutputType::socket, 3);
	addColumn("awaken_sid", &OutputType::awaken_sid);
	addColumn("remain_time", &OutputType::remain_time);
	addColumn("elemental_effect_type", &OutputType::elemental_effect_type);
	addColumn("elemental_effect_expire_time", &OutputType::elemental_effect_expire_time);
	addColumn("elemental_effect_attack_point", &OutputType::elemental_effect_attack_point);
	addColumn("elemental_effect_magic_point", &OutputType::elemental_effect_magic_point);
	addColumn("appearance_code", &OutputType::appearance_code);
	addColumn("create_time", &OutputType::create_time);
	addColumn("update_time", &OutputType::update_time);
}
Example #9
0
void ClientSession::updateOpenedFile(const struct tm& date) {
	if(!serverName.empty() && (file == nullptr || isDateNeedNewFile(date))) {
		if(file)
			fclose(file);

		fileDate.year = date.tm_year;
		fileDate.month = date.tm_mon;
		fileDate.day = date.tm_mday;
		fileDate.hour = date.tm_hour;

		char filename[512];
		sprintf(filename,
				"%s_%04d-%02d-%02d %02d.txt",
				serverName.c_str(),
				fileDate.year,
				fileDate.month,
				fileDate.day,
				fileDate.hour);

		std::string absoluteDir = CONFIG_GET()->log.logDir.get();
		std::string fullFileName = absoluteDir + "/" + filename;

		file = fopen(fullFileName.c_str(), "wt");
	}
}
Example #10
0
void IconServerSession::sendIcon(const std::string& filename) {
	std::string fullFileName = CONFIG_GET()->upload.client.uploadDir.get() + "/" + filename;
	FILE* file = fopen(fullFileName.c_str(), "rb");

	if(!file) {
		getStream()->write(htmlNotFound, htmlNotFoundSize);
	} else {
		fseek(file, 0, SEEK_END);
		size_t fileSize = ftell(file);
		fseek(file, 0, SEEK_SET);
		if(fileSize > 64000)
			fileSize = 64000;

		size_t bufferSize = htmlFoundSize + 10 + fileSize;
		char* buffer = new char[bufferSize];
		size_t fileContentBegin = sprintf(buffer, htmlFound, (long int) fileSize);

		size_t bytesTransferred = 0;
		size_t nbrw = 0;
		while(bytesTransferred < fileSize) {
			nbrw = fread(buffer + fileContentBegin + bytesTransferred, 1, fileSize - bytesTransferred, file);
			if(nbrw <= 0)
				break;
			bytesTransferred += nbrw;
		}

		fclose(file);

		if(nbrw > 0) {
			getStream()->write(buffer, fileContentBegin + fileSize);
		} else {
			getStream()->write(htmlNotFound, htmlNotFoundSize);
		}

		delete[] buffer;
	}
}
Example #11
0
    for (i=0; i<v.argNum; i++) {
		WARN("arg %d: %s",i,v.argument[i]);
    }

    for (i=0; i<v.argNum; i++) {

        fieldid = atol(v.argument[i]);
        mDefaultPhraseField |= (1L << fieldid);
    }

    WARN("mDefaultPhraseField:%x",mDefaultPhraseField);
}

// FIXME QPP_OP_PHRASE have setting BEGIN_OP_PHRASE and END_OP_PHRASE.. 
static config_t config[] = {
	CONFIG_GET("QPP_OP_DEFAULT",set_default_querynode,1,\
						"default operator which is used for blank"),
	CONFIG_GET("QPP_OP_AND",set_op_and,VAR_ARG,"string for AND operator"),
	CONFIG_GET("QPP_OP_OR",set_op_or,VAR_ARG,"string for OR operator"),
	CONFIG_GET("QPP_OP_NOT",set_op_not,VAR_ARG,"string for NOT operator"),
	CONFIG_GET("QPP_OP_PARA",set_op_paragraph,VAR_ARG,"string for NEAR operator"),
	CONFIG_GET("QPP_OP_WITHIN",set_op_within,VAR_ARG,"string for WITHIN operator"),
	CONFIG_GET("QPP_OP_FUZZY",set_op_fuzzy,VAR_ARG,"string for FUZZY operator"),
	CONFIG_GET("QPP_OP_FIELD",set_op_field,VAR_ARG,"string for FIELD operator"),
	CONFIG_GET("QPP_OP_STAR",set_op_star,VAR_ARG,"string for * operator"),
	CONFIG_GET("QPP_OP_PHRASE",set_op_phrase,VAR_ARG,"string for phrase operator"),
	CONFIG_GET("BEGIN_OP_PHRASE",set_begin_op_phrase,1,"one character for check begin op-phrase"),
	CONFIG_GET("END_OP_PHRASE",set_end_op_phrase,1,"one character for check end op-phrase"),

	CONFIG_GET("Field",set_fieldname,VAR_ARG, "string used for field search"),
	CONFIG_GET("VirtualField",set_virtual_fieldname,VAR_ARG, \
					"string used for virtualfield search"),
Example #12
0
	enums[i][MAX_ENUM_LEN-1] = '\0';
	constants[i] = enums[i];

    /* 세번째 인자 base(진법?) 가 0이면, 문자열의 처음 2글자에 따라 
     * base가 결정된다.
     * "0x1234..." -> 16진수
     * "01234..."  -> 8진수
     * "1234..."   -> 10진수
     */ 
	constants_value[i] = atoi( v.argument[1] );

	INFO("Enum[%s]: %lld", constants[i], constants_value[i]);
}

static config_t config[] = {
	CONFIG_GET("Enum", get_enum, 2, "constant"),
	{NULL}
};

static void register_hooks(void)
{
	sb_hook_docattr_compare_function(compare_function, NULL, NULL, HOOK_MIDDLE);
//	sb_hook_docattr_compare2_function(compare2_function, NULL, NULL, HOOK_MIDDLE);
	sb_hook_docattr_mask_function(mask_function, NULL, NULL, HOOK_MIDDLE);
	sb_hook_docattr_sort_function(compare_function_for_qsort, NULL, NULL, HOOK_MIDDLE);
//	sb_hook_docattr_hit_sort_function(compare_hit_for_qsort, NULL, NULL, HOOK_MIDDLE);

	sb_hook_docattr_set_docattr_function(set_docattr_function, NULL, NULL, HOOK_MIDDLE);
	sb_hook_docattr_get_docattr_function(get_docattr_function, NULL, NULL, HOOK_MIDDLE);
	sb_hook_docattr_set_doccond_function(set_doccond_function, NULL, NULL, HOOK_MIDDLE);
	sb_hook_docattr_set_docmask_function(set_docmask_function, NULL, NULL, HOOK_MIDDLE);
Example #13
0
{
	*mServerUptime = atoi(timestr);
	return "OK";
}

static char* get_server_uptime()
{
	//static char buf[11]; /* "4294967295" + '\0' */
	static char buf[SHORT_STRING_SIZE]; /* "4294967295" + '\0' */
	sprintf(buf, "%d[%p]", *mServerUptime,mServerUptime);
	return buf;
}

/** config stuff **/
static config_t config[] = {
	CONFIG_GET("ClearModuleList", clearModuleList, 1,
		"a module name and the name of a shared object file to load it from"),
	CONFIG_GET("AddModule", doAddModule, 1,
		"a module name and the name of a shared object file to load it from"),
	CONFIG_GET("LoadModule", doLoadModule, VAR_ARG,
		"a module name and the name of a shared object file to load it from"),
	CONFIG_GET("TestModule", doLoadTestModule, 2,\
		"a module name and the name of a shared object file to load it from"),
	CONFIG_GET("LogLevel", setLogLevel, 1, \
				"write error log messages of this level or above"),
	CONFIG_GET("ErrorLog", setErrorLog, 1, \
				"path to error log file"),
	CONFIG_GET("QueryLog", setQueryLog, 1, \
				"path to query log file"),
	CONFIG_GET("DebugModulePolicy", setDebugModulePolicy, 1, \
				"debug message only with these modules or only without these modules"),
	CONFIG_GET("DebugModuleName", setDebugModuleName, VAR_ARG, \
Example #14
0
void Environment::beforeTests() {
	std::string gameReconnectExec = CONFIG_GET()->gameReconnectExec.get();

	spawnProcess(4802, gameReconnectExec.c_str(), 1, "/configfile:./rzgamereconnect-test.opt");
}
Example #15
0
static void add_index_word ( index_word_t *index_word , token_t *token , int32_t pos)
{
	index_word->pos = pos;
	index_word->len = token->len;
	strncpy(index_word->word, token->string, MAX_WORD_LEN);

	return;
}

static void set_minimum_token_length(configValue v)
{
	minimum_token_length = atoi(v.argument[0]);
}

static config_t config[] = {
	CONFIG_GET("MinimumTokenLength", set_minimum_token_length,1,\
			"Minimum token length, default 3"),
	{NULL}
};

static void register_hooks(void)
{
	sb_hook_new_index_word_extractor(new_bigram_generator,NULL,NULL,HOOK_MIDDLE);
	sb_hook_index_word_extractor_set_text(_bigram_set_text,NULL,NULL,HOOK_MIDDLE);
	sb_hook_get_index_words(_bigram_generator,NULL,NULL,HOOK_MIDDLE);
	sb_hook_delete_index_word_extractor(_delete_bigram_generator,NULL,NULL,HOOK_MIDDLE);
}

module bigram_module = {
    STANDARD_MODULE_STUFF,
    config,	                /* config */
    NULL,                   /* registry */
Example #16
0
	if ( strcmp(name_space, "search") != 0 ){
		return DECLINE;
	}

	*tab = search_handler_tbl;

	return SUCCESS;
}

static void set_elapsed_time(configValue v)
{
	print_elapsed_time = strcasecmp(v.argument[0], "true") == 0;
}

static config_t config[] = {
    CONFIG_GET("ServerId", set_server_id, 1, "set server id : [string]"),
    CONFIG_GET("NodeId", set_node_id, 1, "set node id : NodeId [no]"),
    CONFIG_GET("Enum", set_enum, 2, "constant"),
	CONFIG_GET("TimeOut", set_timeout, 1, "constant"),
	CONFIG_GET("KeepAliveTimeOut", set_keep_alive_timeout, 1, "constant"),
	CONFIG_GET("KeepAliveMax", set_keep_alive_max, 1, "constant"),
	CONFIG_GET("KeepAlive", set_keep_alive, 1, "constant"),
	CONFIG_GET("PrintElapsedTime", set_elapsed_time, 1, "default is True"),
    {NULL}
};

static void register_hooks(void)
{
	sb_hook_sbhandler_get_table(get_table,NULL,NULL,HOOK_MIDDLE);
	return;
}
Example #17
0
		strcpy( unicode_name, "UTF-16LE" );
#else
		strcpy( unicode_name, "UNICODE" );
#endif
	}
	return SUCCESS;
}

static void get_unicode_name(configValue v)
{
	strncpy( unicode_name, v.argument[0], sizeof(unicode_name) );
	init_unicode_name = 1;
}

static config_t config[] = {
	CONFIG_GET("UnicodeName", get_unicode_name, 1, "cp949 -> unicode"),
	{NULL}
};

static void register_hooks(void)
{
	sb_hook_xmlparser_parselen(parselen,NULL,NULL,HOOK_MIDDLE);
	sb_hook_xmlparser_retrieve_field(retrieve_field,NULL,NULL,HOOK_MIDDLE);
	sb_hook_xmlparser_free_parser(free_parser,NULL,NULL,HOOK_MIDDLE);

//	sb_hook_xmlparser_parse(parse,NULL,NULL,HOOK_MIDDLE);
//	sb_hook_xmlparser_parser_create(parser_create,NULL,NULL,HOOK_MIDDLE);
//	sb_hook_xmlparser_loaddom(loaddom,NULL,NULL,HOOK_MIDDLE);
//	sb_hook_xmlparser_loaddom2(loaddom2,NULL,NULL,HOOK_MIDDLE);
//	sb_hook_xmlparser_savedom(savedom,NULL,NULL,HOOK_MIDDLE);
//	sb_hook_xmlparser_savedom2(savedom2,NULL,NULL,HOOK_MIDDLE);