package Ġhandler Ċ Ċ import Ġcommon . Req Resp Type Ċ import Ġmodel . User Ċ import Ġmodel . game . Game Ċ Ċ interface ĠReq Resp Type Holder < REQ , ĠRESP > Ġ{ ĊĠĠĠ Ġval Ġreq Resp Type : ĠReq Resp Type < REQ , ĠRESP > Ċ } Ċ Ċ interface ĠRequest Handler < REQ , ĠRESP > Ġ: ĠReq Resp Type Holder < REQ , ĠRESP > Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġhandle ( req : ĠREQ ): ĠRESP Ċ } Ċ Ċ interface ĠUser RequestHandler < REQ , ĠRESP > Ġ: ĠReq Resp Type Holder < REQ , ĠRESP > Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġhandle ( user : ĠUser , Ġreq : ĠREQ ): ĠRESP Ċ } Ċ Ċ interface ĠPlayer RequestHandler < REQ , ĠRESP > Ġ: ĠReq Resp Type Holder < REQ , ĠRESP > Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġhandle ( player : ĠGame . Player , Ġreq : ĠREQ ): ĠRESP Ċ } Ċ Ċ interface ĠRequest Handler Provider Ġ{ ĊĠĠĠ Ġfun Ġ< REQ , ĠRESP > Ġprovide Handler By Route ( route : ĠString ): ĠRequest Handler < REQ , ĠRESP >? Ċ } Ċ Ċ interface ĠUser RequestHandler Provider Ġ{ ĊĠĠĠ Ġfun Ġ< REQ , ĠRESP > Ġprovide Handler By Route ( route : ĠString ): ĠUser RequestHandler < REQ , ĠRESP >? Ċ } Ċ Ċ interface ĠPlayer RequestHandler Provider Ġ{ ĊĠĠĠ Ġfun Ġ< REQ , ĠRESP > Ġprovide Handler By Route ( route : ĠString ): ĠPlayer RequestHandler < REQ , ĠRESP >? Ċ } ĊĊ