1. 程式人生 > >思考(四十五):一種通用郵件服務SDK的實現方法

思考(四十五):一種通用郵件服務SDK的實現方法

SDK 製作思路

  • SDK 不干涉使用方使用什麼網路模組、協議
  • SDK 不干涉使用方伺服器組內部架構
  • 使用方只需要關注 SDK 介面用法,不需要關注 SDK 內部郵件協議、格式

Client SDK

主要工作方式:

使用方 某些按鈕點選函式內 呼叫 使用方 網路訊息接收函式內 呼叫 使用方 使用方 事件處理函式註冊註冊註冊註冊註冊內部協議打包,再觸發on_send內部協議打包,再觸發on_send內部協議打包,再觸發on_sendrecv被呼叫,事件觸發recv被呼叫,事件觸發recv被呼叫,事件觸發recv被呼叫,事件觸發client_sdk.mail_get_detailclient_sdk.mail_get_attchment
client_sdk.mail_deleteclient_sdk.recvclient_sdkon_sendon_mail_liston_mail_addon_mail_updateon_mail_delete
  • 模仿 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

主要工作方式:

Common Mail Server 使用方 網路訊息接收函式內 呼叫
使用方 Server N 使用方 呼叫 使用方 事件處理函式呼叫註冊註冊內部連線內部連線內部連線recv被呼叫,事件觸發recv被呼叫,事件觸發呼叫呼叫呼叫mail_server_1mail_server_2mail_server_nserver_sdk.recvserver_sdkserver_sdk.connect_mail_serverserver_sdk.mail_createserver_sdk.player_loginserver_sdk.player_logouton_sendon_get_attchment
  • 模仿 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(…)