思考(四十五):一種通用郵件服務SDK的實現方法
阿新 • • 發佈:2018-12-14
SDK 製作思路
- SDK 不干涉使用方使用什麼網路模組、協議
- SDK 不干涉使用方伺服器組內部架構
- 使用方只需要關注 SDK 介面用法,不需要關注 SDK 內部郵件協議、格式
Client SDK
主要工作方式:
- 模仿 kcp 工作原理, 提供 recv 介面、 on_send(註冊)介面,這樣就可以脫離網路模組
- 註冊事件,這樣客戶端可以根據事件觸發渲染(SDK recv 介面內部會觸發,並呼叫註冊的事件控制代碼)
- 郵件處理介面,SDK內部郵件協議打包,並觸發 on_send 實現傳送郵件協議
具體介面定義如下:
-
網路介面
- bool recv(const char* data, int len)
- void on_send(const char* data, int len)
-
郵件事件介面
- void register_on_mail_list(…)
- void register_on_mail_add(…)
- void register_on_mail_update(…)
- void register_on_mail_del(…)
-
郵件處理介面
- void mail_get_detail(…)
- void mail_get_attchment(…)
- void mail_delete(…)
Server SDK
主要工作方式:
- 模仿 kcp 工作原理, 提供 recv 介面、 on_send(註冊)介面,這樣就可以脫離網路模組
- 可以有多個 Server 例項,通過 SDK 連線 Mail Server
具體介面定義如下:
-
網路介面
- bool connect_mail_server(…)
- bool recv(const char* data, int len)
- void on_send(const char* data, int len)
-
郵件事件介面
- void register_on_get_attchment(…)
-
郵件處理介面
- void mail_create(…)
- void player_login(…)
- void player_logout(…)