Skip to content

Instantly share code, notes, and snippets.

@KisaragiEffective
Last active February 23, 2020 06:14
Show Gist options
  • Save KisaragiEffective/48594b6ce69745438b7d3ec56e2f40a2 to your computer and use it in GitHub Desktop.
Save KisaragiEffective/48594b6ce69745438b7d3ec56e2f40a2 to your computer and use it in GitHub Desktop.

アイテムトランザクション

  • アイテムの電子的な転送を取り扱う

やること

  • プレイヤー→マインスタックの転送 [1]
  • マインスタック→プレイヤーの転送 [1]
  • マインスタック→マインスタックの転送 [2]
  • プレイヤー→プレイヤーの転送 [3]

備考

[1]: SeichiAssistから委譲されることになる [2]: 本来の目的。アイテムを取り出すよりもDB上で操作したほうがいい [3]: プレイヤー間トレードシステムの想定

処理手順

アイテムを取り出すとき

(rをリクエスト、 f(e) をコールバック関数とする)

  1. 処理を開始するときrをAPIに向けて送る
  2. APIはDBにアクセスする
  3. 照会結果の内、1種類でもリクエストの個数に足りないとき、クライアントにエラーを通知する。6へジャンプする
  4. ここにたどり着いたということはすべての個数が足りているということだから、減った理由とともにDBを更新する
  5. クライアントに成功を通知する
  6. f(e) を呼び出す

アイテムを格納するとき

(rをリクエスト、 f(e) をコールバック関数とする)

  1. 処理を開始するときrをAPIに向けて送る
  2. APIは増えた理由とともに、DBを更新する (追加は常に成功する)
  3. クライアントに成功を通知する
  4. f(e) を呼び出す
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment