在實現服務端或者客戶端的時候通常都要寫一些「公式化」的**,負責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中可以看出,由於在定義靜態變數的時候例項化單例類,因此在...