H:Kc @s@ddkZddkZddkZddkZddkZddkZddklZdZde fdYZ de fdYZ de fd YZ d e fd YZd Zd e fdYZde fdYZde fdYZde fdYZde fdYZddZdS(iN(tStringIOcCsC|dd!}dt|GHdGx|D]}dt|Gq'WdS(Niidsplain: shex:s%x(treprtord(tbytestb((s&/home/matti/devel/playerio/playerio.pythexdump s  t PlayerIOErrorcBseZddZdZRS(cCs||_||_dS(N(tmessagetcode(tselfRR((s&/home/matti/devel/playerio/playerio.pyt__init__s cCs|idt|idS(Ns (t)(RtstrR(R ((s&/home/matti/devel/playerio/playerio.pyt__str__sN(t__name__t __module__tNoneR R (((s&/home/matti/devel/playerio/playerio.pyRs t HTTPChannelcBseZdZdZRS(cCsd|_d|_dS(Nshttp://api.playerio.com/apit(tendpointttoken(R ((s&/home/matti/devel/playerio/playerio.pyR s cCsl|i}h}|idjo|i|dHs$Unexpected error occured - Player.IOsHTTP interface returned errortutf8(tSerializeToStringRturllib2tRequestRR t build_openertopenRtreadtstructtunpackRtdecodetParseFromString(R tmethodt input_msgt output_msgt error_msgt on_successton_errortdatatheaderstreqtrest has_tokentlengthtstatus((s&/home/matti/devel/playerio/playerio.pytrequests* &    (RRR R/(((s&/home/matti/devel/playerio/playerio.pyRs tMessagecBs>eZdZdZdZdZdZdZRS(cGs4||_g|_t|o|i|ndS(N(ttypetcontenttlentadd(R R1tvalues((s&/home/matti/devel/playerio/playerio.pyR ?s   cGs"x|D]}|i|qWdS(N(t _add_single(R R5tvalue((s&/home/matti/devel/playerio/playerio.pyR4EscCs|ii|dS(N(R2tappend(R R7((s&/home/matti/devel/playerio/playerio.pyR6IscCs t|iS(N(R3R2(R ((s&/home/matti/devel/playerio/playerio.pyt__len__MscCs |i|S(N(R2(R tindex((s&/home/matti/devel/playerio/playerio.pyt __getitem__PscCsd|id}x|iD]}|d7}t|tjpt|tjo|d|dd!7}qt|tjo|d|7}qt|tjo|d|7}qt|tjo|d |7}q|d |7}qW|d 7}|S( Nsmessage t{s s string "%s"iidsint %ssbool %ss double %ss unknown "%s"s }(R1R2R tunicodetinttbooltfloat(R trtval((s&/home/matti/devel/playerio/playerio.pyR Ss  & (RRR R4R6R9R;R (((s&/home/matti/devel/playerio/playerio.pyR0>s      tBinarySerializercBseZdZdZdZdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZRS(iiii iiiiicCsP|i|_d|_d|_d|_d|_d|_|id|_ dS(N( t StateInittstateRtvaltypetpartlentvallefttmsgtbuft _clear_buft on_message(R ((s&/home/matti/devel/playerio/playerio.pyR us       cCs:|idjp|iidjot|_ndS(Ni(RJRttellR(R ((s&/home/matti/devel/playerio/playerio.pyRKs&cCs(x!|D]}|it|qWdS(N(tadd_byteR(R Rtc((s&/home/matti/devel/playerio/playerio.pyt add_bytesscCs_|i|ijo||i@|ijoN|i|_||i@|_|idjo|i|_q|idq[||i@|ijo|i||i@q[||i@|ijo1|i|_||i@d|_|i |_q[||i @|i jo1|i |_||i @d|_|i |_q[||i jo|it q[||i jo|itq[||ijo%|i|_d|_|i|_q[td|n|i|i jo|iit||ii|ijo|i|ijo5|i|_|i|ii|_|iq|i|i jo#|i|i|iiqq[n|i|ijo|iit||ii|ijo|i|ijp|i|ijo#|i|iiidqW|i|ijo*|itid|iidqWq[ndS(NiRiisUnknown valtype: %xRs>d(RERDtShortStringPatternRFRGt StateDatat _got_valuetShortUnsignedIntPatternt StringPatternt StateHeadert IntPatterntBooleanTruePatterntTruetBooleanFalsePatterntFalset DoublePatternRRJtwritetchrRMt_decode_varinttgetvalueRKR RR(R tbyte((s&/home/matti/devel/playerio/playerio.pyRNsT      +&#cCs|i|_|it}|idjo ||_nw|idjo-t||_|idjo t}qn:|id8_|idjo t}n|ii ||o:|i dj o|i |ind|_d|_ndS(Nii( RDRERKR[RHRRIR0RYR6RL(R R7tmsgdone((s&/home/matti/devel/playerio/playerio.pyRSs$     cCsUd}t|}x<to4|t|d@7}|dL}|djoPqqW|S(NRiii(R>RYR^(R RBRA((s&/home/matti/devel/playerio/playerio.pyt_encode_varints    cCsQdGHt|d}x,|D]$}|dK}|t|d@O}qWdG|GH|S(Ns decode varintiiitresult(RR(R RBRARO((s&/home/matti/devel/playerio/playerio.pyR_s   cCs+|i|}t|t|dB|S(Ni(RcR^R3(R R1RB((s&/home/matti/devel/playerio/playerio.pyt _get_headerscCs |i|S(N(t_serialize_value(R R7((s&/home/matti/devel/playerio/playerio.pyt serializescCsAd}t|tjpt|tjoh|id}t|djot|it|B}n|i|it|}||7}nt|t jo-|ot|i }q=t|i }njt|t joJ|djo$|djot|i |B}q=|i|i|}n td|S(NRRi@isValue type error(R1R R=tencodeR3R^RQReRUR?RXRZR>RTRWt Exception(R R7RAR((s&/home/matti/devel/playerio/playerio.pyRfs"& cCsot}|i|it||i|i|ix$|D]}|i|i|qEW|iS(N(RR]RfR3R1RgR`(R RIRJR7((s&/home/matti/devel/playerio/playerio.pytserialize_messages (RRRTRWRQRURXRZtByteArrayPatternR\RDRVRRR RKRPRNRSRcR_ReRgRfRj(((s&/home/matti/devel/playerio/playerio.pyRCfs,   =    ccs*x#|D]}ti|||VqWdS(N(t playerio_pb2t KeyValuePair(tdicttkey((s&/home/matti/devel/playerio/playerio.pyt_to_key_value_arrayst ConnectioncBskeZdZdZdZdZdZdZdZdZ dZ d Z d Z RS( c Cs||_||_||_||_||_t|_h|_d|_ |d} t |_ |i |i _ |djo'| GHti| i| if|_n6|id} ti| dt| df|_|iid|idtd|i} x.|D]&} | it| t|| q W|i| t|_tid|idd |_|ii ||dS( Nit:iittjointtargettnamet read_thread(!tclienttroomidtjoinkeyt devserverR'R[t connectedtmessage_handlersRtdisconnect_handlerRCt serializerthandle_messageRLtsockettcreate_connectiontaddresstporttsocktsplitR>t settimeoutt_sendR0R4R t send_messageRYt threadingtThreadRwtthreadtstart( R RxRyRzt endpointstjoindataR&R'R{RtinfoRIRo((s&/home/matti/devel/playerio/playerio.pyR #s6           "& $   cCs||i|scsi|S((R(RI(R R'(s&/home/matti/devel/playerio/playerio.pyRs(RltCreateJoinRoomArgstroomIdRtvisibleRptroomDataR8tjoinDataR[t isDevRoomtCreateJoinRoomOutputtCreateJoinRoomErrorRR/( R Ryt servertypeRtroomdataRR&R'tinputtkvtoutputterror((R RR'R&s&/home/matti/devel/playerio/playerio.pytcreate_join_rooms          c Cs/t|i|i|i|i|||ddS(N(RqRxRtjoinKeyRR(R RIRR&R'((s&/home/matti/devel/playerio/playerio.pyRsc sti}||_x$t|D]}|ii|q"W||_||_t|_ ti } ti } i i d|| | fdfddS(Nicsi|S((tlist_rooms_success(RI(R R&(s&/home/matti/devel/playerio/playerio.pyRscsi|S((R(RI(R R'(s&/home/matti/devel/playerio/playerio.pyRs(Rlt ListRoomsArgsRRptsearchCriteriaR8t resultLimitt resultOffsetR[t onlyDevRoomstListRoomsOutputtListRoomsErrorRR/( R Rtsearchcriteriat resultlimitt resultoffsetR&R'RRRR((R R&R's&/home/matti/devel/playerio/playerio.pyt list_roomss        cCs;g}x$|iD]}|it|qW||dS(N(troomsR8R(R RIR&Rtroom((s&/home/matti/devel/playerio/playerio.pyRs  N( RRR RRRRRR(((s&/home/matti/devel/playerio/playerio.pyRs      tClientcBseZdZRS(cCst|_t|||_dS(N(R[RRt multiplayer(R R((s&/home/matti/devel/playerio/playerio.pyR s (RRR (((s&/home/matti/devel/playerio/playerio.pyRst _ConnectorcBs&eZddZdZdZRS(c Cs||_||_t|_ti}||_||_||_||_ ti }ti } |ii d||| |i |idS(Ni (R&R'RRRlt ConnectArgstgameIdt connectionIdtuserIdtautht ConnectOutputt ConnectErrorR/thandle_successR( R tgameidt connectionidtuseridRR&R'RRR((s&/home/matti/devel/playerio/playerio.pytconnects          cCs)|i|i_|it|idS(N(RRR&R(R RI((s&/home/matti/devel/playerio/playerio.pyRscCs@t|i|i}|idjo |n|i|dS(N(RRRR'R(R RIR((s&/home/matti/devel/playerio/playerio.pyRs N(RRRRRR(((s&/home/matti/devel/playerio/playerio.pyRs  cCsti||||||S(N(RR(RRRRR&R'((s&/home/matti/devel/playerio/playerio.pyRs(RRRRtgoogle.protobuftgoogleRlRRRiRtobjectRR0RCRpRqRRRRRR(((s&/home/matti/devel/playerio/playerio.pyts$       &( ^8