ACE入門配置檔案

2021-05-22 21:42:36 字數 3045 閱讀 7409

此示例演示了ace對配置檔案的讀取的功能,ace可以方便的從配置檔案讀取字串型別、
整數型別、二進位制資訊
#include "ace/os_ns_string.h"

#include "ace/configuration.h"

#include "ace/configuration_import_export.h"

#include "ace/get_opt.h"

#include "ace/log_msg.h"

#include "ace/inet_addr.h"

#include "ace/service_object.h"

class

ha_status : public

ace_service_object

;int

ha_status::init

(int

argc, ace_tchar *argv)

// listing 1

// listing 2 code/ch04

ace_configuration_heap config;if(

config.open()

== -1

)ace_error_return((

lm_error, ace_text (

"%p/n")

, ace_text (

"config"))

, -1);

ace_registry_impexp config_importer (

config);if

(config_importer.import_config

(config_file)

== -1

)ace_error_return((

lm_error, ace_text (

"%p/n")

, config_file)

, -1);

ace_configuration_section_key status_section;

//指定開啟hastatus 節進行讀取if(

config.open_section

(config.root_section()

,ace_text (

"hastatus"),

0,status_section)

== -1

)ace_error_return (

(lm_error, ace_text (

"%p/n")

,ace_text (

"can't open hastatus section"))

,-1);

//分別用來儲存讀取的字串型別的位址和整形的埠號

u_int status_port;

ace_tstring server_ip ;

//讀取取字串型別的位址屬性if(

config.get_string_value

(status_section,ace_text (

"serverip"),

server_ip)

==-1

)ace_error_return((

lm_error,

ace_text (

"hastatus serverip does not exist/n")

),-1)

;//讀取整形的埠屬性if(

config.get_integer_value

(status_section,

ace_text (

"listenport"),

status_port)

== -1

)ace_error_return((

lm_error,

ace_text (

"hastatus listenport does not exist/n")

),-1)

;//this->listen_addr_.set (static_cast(status_port));

// listing 2

ace_debug (

(lm_debug, ace_text (

"serverip = %s/n")

,

server_ip.c_str()

));ace_debug (

(lm_debug, ace_text (

"listenport = %d"

),status_port));

return0;

}int

ace_tmain (

int argc, ace_tchar *argv)

配置檔案內容格式

ace對配置檔案的解析和我們通常用的對配置檔案讀寫的類庫不太一樣1)

,感覺ace對配置檔案的

讀取對格式要求比較嚴格和我們普通使用的配置檔案格式相容性稍差一些。

有以下幾點點需要我們注意。

如果你用來表示乙個字串型別的屬性值,你應該用'」'包括你的

屬性值 和

屬性名稱 ,

否則ace將不能正常解析

如果你使用類似」dword:「、」hex:「等字首表示數字型別的屬性值,

你需要把

屬性名稱 用'」'包括起來 ,

屬性值 能用'」'包括起來

表示整數型別的屬性時,屬性名稱和屬性值都不要'」'包括起來

測試程式

配置檔案內容

#這用來表示乙個"節"

[hastatus]

;字串型別的屬性值

"serverip"="127.0.0.1"

;整數型別的屬性值

listenport=#8080

注意:配置檔案最後一行一定要空一行***

執行結果1) 象 attribute=value 這樣的定義ace將不能正常解析,這也是我在讀了ace的實現**後才得知的,

一開始還以為這是乙個bug

ACE操作配置檔案

配置檔案操作相關類 1 ace configuration heap 它可以用在幾乎所有的平台上,在記憶體中儲存所有配置資訊.可以對記憶體的分配進行定製,使用持久的後備儲存,但是最常用的是動態分配的堆記憶體,所以這個類的名字裡面含有乙個heap 2 ace configuration win32re...

SpringMVC入門 配置檔案

1.param name 的值得是 servlet class 的屬性,也可以是繼承的或實現的類的屬性 屬性原始碼可通過ctrl t在類中查詢 2.load on startup 表示載入順序,數字越小優先順序越高,數字的意思表示在類的啟動前n秒載入 name springdispatcherser...

ACE讀取配置檔案二次封裝

其實在ace中已經整合了讀取配置檔案的類,在此班門弄斧對ace配置檔案操作類進行二次封裝,可以簡化平常的呼叫 並實現配置引數自動更新的功能 在 中使用了c 模板特化的方式,有興趣的朋友可以仔細研究下 關於ace配置檔案類的用法本章不做詳細介紹,不熟悉可以參考 ace programmer s gui...