Skip to content

Latest commit

 

History

History
58 lines (49 loc) · 1.8 KB

仕様書.md

File metadata and controls

58 lines (49 loc) · 1.8 KB

接続方法

TCPコネクションはAgentからServerに向かって接続する。
ServerからリクエストブロックをAgentに向かって投げる。
AgentはDBにSQLを投げて結果を整形し、Serverに向かってレスポンスブロックを投げる。

リクエストブロック仕様

ヘッダ8byte
種別(u8)
予約済(u8)
リクエストID(u32be)
body長さ(u16be)
(bodyの長さで表現されたバイト数のリクエスト本文)

body長さの量だけ読み取ってそれをリクエスト本文(種別)として読む
その次のバイトから次のヘッダとして解析する
リクエストIDは単純加算で増加させる(溢れて戻る頃には初期の要求はタイムアウトすると期待する)

リクエスト本文(種別=1)

u16be文字列長さ
UTF-8文字列 webpublic-*

リクエスト本文(種別=2)

u16be文字列長さ
UTF-8文字列 thumbnail-*

リクエスト本文(種別=3)

(Agentとの接続を確認する為に発行されるリクエストです) (本文はありません。この要求には必ず204を返します)

リクエスト本文(種別=4)

u16be文字列長さ
UTF-8文字列 (accessKey値)

不明なリクエスト種別であるときは501ステータスコードで応答する

レスポンスブロック仕様

ステータスコード(u16be)
リクエストID(u32be)
u16be文字列長さ(404ステータスの場合などは0になる)
UTF-8文字列 JSON

{
  "uri":"https://example.com/files/ea6e968a-3e3b-4d18-a9a4-c68e0d10b856.webp",
  "link":true
}

ステータスコード表

  • 200 OK
  • 204 No Content
  • 400 Bad Request
  • 403 Forbidden
  • 404 Not Found
  • 418 I'm a teapot
  • 500 Internal Server Error
  • 501 Not Implemented
  • 503 Service Unavailable
  • 504 Gateway Timeout