將Ministored從libevent1.4升級到2.0以後,花了兩天額外的時間來做調試這個http的框架。
按照開發的設想,這個ministored支持四個基本的操作put、get、delete、status;在經過幾個版本的改動以後,協議如下:
1)數據通過post的方式提交
2)各個基本操作通過一個自定義的Http的頭method來區分。而client和server之間的傳送的二進制數據通過base64編碼以後的字符串發送。數據附加在post操作提交的字符緩衝區中。
2.1 put操作需要的數據key value,解碼以後,按照key和value的大小直接二進制拷貝,server並不關心數據的具體類型
2.2 get操作接收client發送的key,解碼,取出對應的數據以後,base64編碼,發送給client
2.3 delete操作接收client發送的key,解碼,刪除數據
2.4 status操作直接返回當前Ministore狀態的描述字符串
3)各個操作的結果通過自定義的響應頭"result"返回
下面是部分的代碼,限於篇幅,就不完全展開了。
這個server框架不僅適用ministored,可以將它搭配任意的存儲工具來做網絡端的存儲。比如BDB、tokyo cabinet來做一個定製的大容量的緩存。