/* Ċ Copyright Ġ( c ) Ġ 2 0 2 0 ĠRS ĠMod Ċ Ċ Permission Ġto Ġuse , Ġcopy , Ġmodify , Ġand / or Ġdistribute Ġthis Ġsoftware Ġfor Ġany Ċ purpose Ġwith Ġor Ġwithout Ġfee Ġis Ġhereby Ġgranted , Ġprovided Ġthat Ġthe Ġabove Ċ copyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġappear Ġin Ġall Ġcopies . Ċ Ċ THE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS " ĠAND ĠTHE ĠAUTHOR ĠDISCLAIM S ĠALL ĠWARRANTIES Ċ WITH ĠREG ARD ĠTO ĠTHIS ĠSOFTWARE ĠINCLUDING ĠALL ĠIMPLIED ĠWARRANTIES ĠOF Ċ MER CHANTABILITY ĠAND ĠFITNESS . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHOR ĠBE ĠLIABLE ĠFOR Ċ ANY ĠSPECIAL , ĠDIRECT , ĠINDIRECT , ĠOR ĠCONSEQUENTIAL ĠDAMAGES ĠOR ĠANY ĠDAMAGES Ċ WH AT SO E VER ĠRESULT ING ĠFROM ĠLOSS ĠOF ĠUSE , ĠDATA ĠOR ĠPROFITS , ĠWHETHER ĠIN ĠAN Ċ ACTION ĠOF ĠCONTRACT , ĠNEGLIGENCE ĠOR ĠOTHER ĠTOR TI O US ĠACTION , ĠARISING ĠOUT ĠOF Ċ OR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠUSE ĠOR ĠPER FORMANCE ĠOF ĠTHIS ĠSOFTWARE . Ċ */ Ċ package Ġcom . ve o sp s . game . net . handshake Ċ Ċ import Ġcom . github . m ichael bull . logging . Inline Logger Ċ import Ġcom . ve o sp s . game . util . Bean Scope Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġio . netty . channel . Channel HandlerContext Ċ import Ġio . netty . handler . codec . Byte To Message Decoder Ċ import Ġorg . springframework . context . annotation . Scope Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ private Ġval Ġlogger Ġ= ĠInline Logger () Ċ Ċ @ Component Ċ class ĠHand shake Decoder ( ĊĠĠĠ Ġprivate Ġval Ġhandlers : ĠHand shake Handler Map Ċ ) Ġ: ĠByte To Message Decoder () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdecode ( ctx : ĠChannel HandlerContext , Ġbuffer : ĠByte Buf , Ġout : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġopcode Ġ= Ġbuffer . read Byte (). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġhandlers [ opcode ] ĊĊĠĠĠĠĠĠĠ Ġif Ġ( handler Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . disconnect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error Ġ{ Ġ" Handler Ġnot Ġfound Ġfor Ġhandshake Ġ( opcode =$ opcode )" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdecoder Ġ= Ġhandler . decoder ĊĠĠĠĠĠĠĠ Ġval Ġencoder Ġ= Ġhandler . encoder ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= Ġhandler . adapter ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhandler . response ĊĊĠĠĠĠĠĠĠ Ġctx . pipeline (). replace ( this , Ġdecoder . name , Ġdecoder . provider ()) ĊĠĠĠĠĠĠĠ Ġctx . pipeline (). add Last ( encoder . name , Ġencoder . provider ()) ĊĠĠĠĠĠĠĠ Ġctx . pipeline (). add Last ( adapter . name , Ġadapter . provider ()) ĊĠĠĠĠĠĠĠ Ġctx . pipeline (). add Last ( response . name , Ġresponse . provider ()) ĊĠĠĠ Ġ} Ċ }