ice使用簡單式例 c

2021-07-26 21:21:50 字數 1983 閱讀 9958

在實現服務端或者客戶端的時候通常都要寫一些「公式化」的**,負責ice通訊器初始化、異常捕獲,以及應用終止後的銷毀。如下:

1int status=0;

23    ice::communicatorptr ic;

45    try

67    

2425    catch (const ice::exception & e)

2627    

3435    catch (const char * msg)

3637    

4445    if ( ic )

4647    

5657        catch (const ice::exception & e)

5859        

6667}

6869

如果每次都要寫這麼多的話,第一浪費時間和精力,第二不能將注意力集中到業務邏輯上。還有一點就是對**的整潔和易讀方面做的不夠好(本人略微有些**「潔癖」)。

其它通訊器需要使用ice::initialize()手工生成。

1. 需要在服務端中引用ice/service.h標頭檔案。本人曾在此浪費了2個小時。

2. 新建乙個類繼承ice::service,並實現其中的三個虛函式。**如下:

1class myservice : public ice::service23;

1819void myservice::interrupt()

2021

2829bool myservice::stop()

3031

3839bool myservice::start(int argc, char * argv,int& status)

4041

5657

3.  在main函式中啟動服務。此處需要注意對於服務來說最常見的有安裝服務、解除安裝服務、啟動服務、停止服務四個操作。這四個操作分別通過啟動引數來控制。以win32平台為例:

--service name

作為名叫name 的windows 服務啟動。在傳給start 成員函式的引數向量中,這個選項會被移除。

但是,在應用作為windows 服務執行之前,它必須先被安裝,因此,ice::service 類還支援另外一些的命令列選項,用於執行管理活動:

--install name [--display disp] [--executable exec][arg ...]

安裝name 服務。如果指定了--display 選項,就把disp 用作服務的顯示名,否則就使用name。如果指定了--executable 選項,就把exec 用作服務的可執行路徑名,否則就使用可執行檔案的路徑名來呼叫--install。其他任何引數都會不加改變地傳給service::start 成員函式。注意,在啟動時傳給服務的引數集中,這個命令會自動增加命令列引數--service name,因此,你不需要顯式地指定這些選項。

--uninstall name

移除name 服務。如果服務目前是活動的,在反安裝之前,必須先使它停止。

--start name [arg ...]

啟動name 服務。其他任何引數都會不加改變地傳給service::start 成員函式。

--stop name

停止name 服務。如果指定的管理命令不止乙個,或者在使用--service 的同時還使用了管理命令,就會發生錯誤。在執行了管理命令之後,程式會立即終止。ice::service 類支援windows 服務控制**service_control_interrogate 和service_control_stop。在收到service_control_stop 時,ice::service 會呼叫shutdown 成員函式。

在visual studio中設定啟動引數—install myservice,可在系統服務中註冊名為「myservice」的服務。

啟動服務端程式可以在系統服務列表中看到myservice已經作為服務註冊進去了。

4. 至此ice的服務端即可作為系統服務的形式存在與客戶端進行通訊了。

Google Test Frame 簡單使用例子

1 序言 為什麼折騰google test 被逼無奈的。最近研究google開源的基於列儲存的資料庫查詢引擎supersonic原始碼。初略的瀏覽了一遍 竟然沒有main函式,頓時驚訝的目瞪口呆呀。對於習慣了從main函式開始,一行一行跟 的程式猿,只覺得無從下手了。看了看原始碼中的readme,s...

C 關聯式容器的簡單使用(下)

c 98中,stl提供了底層為紅黑樹結構的一系列關聯式容器,在查詢時效率可達到log2 n 即最差情況下需要比較紅黑樹的高度次,當樹中的結點非常多時,查詢效率也不理想。最好的查詢是,進行很少的比較就能夠將元素找到,因此在c 11中,stl又提供了四個unordered系列的關聯式容器,這四個容器與紅...

餓漢式單例與懶漢式單例的C 實現

本文將介紹如何使用c 語言實現餓 漢式單例與懶 漢式單例,並分析餓漢式單例與懶漢式單例的優缺點。1.餓漢式單例類 餓漢式單例類 eager singleton 是實現起來最容易的單例類,餓漢式單例類結構圖如圖1所示。圖1 餓漢式單例類圖 從圖1中可以看出,由於在定義靜態變數的時候例項化單例類,因此在...