From 3ce1752ddd020f62f60be5cdcaf1de077dcca977 Mon Sep 17 00:00:00 2001 From: Metatheria Date: Mon, 15 Feb 2021 17:58:56 +0100 Subject: [PATCH] Revert "outdoor users(17)" This reverts commit 6d384512a6cf2e9c210fd759f5305e5db7ef73a2. --- Projet.jar | Bin 18794 -> 19393 bytes src/chat/ClientWindow.java | 2 +- src/chat/ConnectNotification.java | 11 +- src/chat/DisconnectNotification.java | 5 +- src/chat/Message.java | 5 +- src/chat/NetworkClient.java | 22 +-- src/chat/Notification.java | 16 +- src/chat/ReceiveThread.java | 212 ++++++++++++++------------- src/chat/User.java | 9 +- 9 files changed, 140 insertions(+), 142 deletions(-) diff --git a/Projet.jar b/Projet.jar index 2f685c5e8ab8f1d558fd9f6659e7c19e633f33b1..5cbe56cb96ea3cab3086bcfe199204411c6cbe3d 100644 GIT binary patch delta 12547 zcmY*kSm9#sv;bVghP35q(vch(D&~*Ehl# zzXysP7@<{K$OXW38JPff`ai=TU3$*&h9XKl=U_)qa2fAW9czmpzsj%<71kb{*W z{zQ<-rtL?hYdVrs-xW)jdDgs|?^t;lzL_>W>=_)nme< zlOLueMArRbyE<2g)M=k0PT``qDCa)%z>LgE#yXd{s+V@bX7#waG;FTRPRC~r?(VuQlLtt0T}hE%Gp}Z`r8zu0teSjG zwJ*a6>s>Uuknpn5l3R1Ct#9izn=Z%UN_x_H4$zy%GctXNEUCEVqYND{iI$sa!bRL9 zoZRpU2?c%Sd~=mp`7F~RuUoQ%2;YImMMVF&p7i+PNVR^gWjcu7J+ZGm0E}H!c5WQ323|Ap2=j=G_UuQ!! zkO9Xah_H|=uHp-Y$N~5!w&Z=`YRRl9M0$?zi;n2qGc7;#a_3E;oW&duN|!F@{X4@@ zca7oQ?jR_wX-3%!RSG)3+y8N-XHl(BosRoqJv%2VKz!98A76q*d%Gb;9_7Z+Mxd{y zOt4&}nm^eT8)7ejK5chC%4vRzC}jj`%mCnKFOhWSa+OZ*#*x*P(AzEUr~2_5%e3#1 z0E3LiB*IcyQPPEO|CK0rLrf;j7gLoIwHhd8{RPDgQ@D6< zpe^ZEj=){`C8e*>Pr}=&In1Um3wn>q>S@EK)KXAWW-m=DxXfzjyx<6eavy~d$V9a8UjdM zKEn-6Y%{y94n6FKtucFHuSa4P3{0<|Mp?~~{CYO|G}h2=IG~v$rhun^D<8IKna0

yqhXuXv{{z_vSTaR(Aohsx9*j2$#V>w_6|z!Rm$D|FC7Z&ZwqUAm`UI zU8`XA9?uK&`yP1eDg1zaEUi2|Bsd)Rc%~nCkLE2!AfC*x!z@b4R;>9OSo|TjEjflK zbfE?(H?eruT)^bmM0AOnlEF}3IuqaUT`IO$wg?Aw*p_Xu9>0k#cO)Rx5?4vCmNpzQ z%k<-NsHws9W3=@)LLgGF@91<8OB>c zf@}N4+pK>!R;9FwwWS6DZMgM9I>}vHDI4X%bEz`+U0Sh|&gjolW#YTE5@pQ0v@+$+ zv<{NRTMzDcXghDVP}+1EhqAdMpfvoA2Y;m_f;B7Tb)Q`J*b;z9=BLXuja{uv|0{2f z7M#VCL16)JBgd{wU1q$OVB$(f&X{&2N0y>}1&8j}%(KZeK1LUF#7KQU94C@->uE|2 zK0=d5ZXC3{>?2QWgzOhZc=wYtD0vp zZ}yk`p5zYACGSmjQkgT^l6fg8cVs~slLLeK=zHEO5>A2RoJ?lUXU{zLk|!hEa|ypo za@(rs`ICp>wm#(^`ru30o4NNF&!HUr2bp(Ah|1r#^5NvW=Ay{?{Ap%0drw2`!Ln$4)s-_!5m z1x|H3a5qkLI%b>S#cPT2T;<~*_B zWwCs6yhw}WVvg>v0DX3{7sH|D{dkK`U)uhJgA8a8_dR^H)u((h%5E^+?=u0(MTK33 zT~TQ{w{Apg4WSA@-p|!8M7HiCqr_BNHQ%0!iva+P__a*$%yTT?? zFsJ}n$Sv$JLNZ{w$^3c+lLIN^7Smu(8|q$`Yy&b}x-3{px( zT|va(OljxZw7no(J+U^=@WVGE#xHXjHcu-ge=bm78-Fo*9((#eggIzNJKpFC z4WKkvO)k6f=#pW|QjP`G0lXr$s6QfCR`CHIjn5rTeivgbm#nvb#16f(SS=t!-f?Xa z5#o^ay(!8h*7|g{697jgHi6JNp1oTAF`a^77z*}j5wBao^MWYc zQ0CVuFc+mn*B_x#X|MHw13a30j{wc`iTrUy1BC;L61bTSC0SUwI(~^KbObQ48Z0od ze;dj=6W|UJCqP+VapNnRpG|g12sM0xl1x6e?~+sH(JUo42DDQH?<_Y)nY9y61Dz+e z&%%y63S33_N5DsUWuq*ea9jQ1HRMeI77a;mWi)!UvQ769SJ4y#6%%>Kr z8L~^cbFz|2I$}pK10L@P#n~VYjd`(ZSSV43ouxBV!H|;dp;8HFHW51$?kFoKMapR7 z*ky@aPsBvMsig!z4k++@%9bMV7k)*I5l5zzwQ*JD!N!78G}iHB`}nlWMoPXeYl6@f z%m`yOCP0)%o}``ti@=Ormnh3q{`bl}k@9B!tgdt>!@ z%3LIqz<+cb#I769TK!{bj{7FbdQ!qBF4MK%NS7sELwcwB%=qoDNiW$f5j4l#4g5xR`X>P#>tP=Z(B?+k7O*2L~SvrD?+NsDaMk2W02>h zVR-`+8TTw(R4QOGKYDt~U71{Y9-$2ovNcOIrsKCGS+!tDXr12+R5QSV5ib}ZZM$^7 zo)&g+55Y7|G)jl>R9Q>wPuomU>^emVL%N2xJLCY!EsD3C*WNti%NaHmD{9Rdr`Mw5 z#iuw!KU-3{kO|=vu@_f0!vs4O>hymjP{pD7!6vsg2X+w$llQlHqLBZ+mBZ#hMG6W)vaG|xSG1AOtYUXio1Kmd-JZI^ zkb=zA{bD7AdL>q3s<;e_-YiYEO4=Yx93%#5=*%qScQh&#xLRMj!3%Ftsg=*@)y2i6 z1Bt-&4nPC|?io`?!;bX&BplzZ>4%;%%7%sd0(<4=HG6B&g7Qs(+lVzeu36XUIzg&y z37ZB`D#hb}!u9RozV=gkoAm%qb}=**wY9kx3);wi}!@v&~IQ(l2@R-4h~_ScRD-QofUea9)R zL(;+IuLzG6PU47oN;8XMCcdkTwdiNa?Mp>~Y2JhNmYdn<{w{G^kAycQ3_jDpVUoHn`wl;+rQ)lj08tKd{Iz6vzQti)@sOFH#PpTTmj(? zFgIm|1{TNoS`erNA3)gZSe!J;|3^T8{}C zYvhd5FCk!`D~;6_exVKF z9Am#qz@9=J(pRS5R7Ii@q4BmP{+)3Z$PB4Yzl)Yq6#1|+-0`Cf+;)>T5<3smPJTg8 zenQg}T-*~#SE_{n=u^Hd_25ADO#2D`&pG6IJXJS^00Ya0`u7|{!GYm;{UsV00a{+Z zx=Se^aa4cC?pzM26)52H>%51ksK{3XlZb;sPy%ecfdR%nR8eMQmXT{Rkj2%|2-HeR zEVDS9^sZVm2La;W1+YqU=#gf@%w*_uPzDm*Pms(q*j1keuB98gz7E4)t}#0ApbqjBBLP&rFdaHJ0-MQc4|MP0WjE@De;c)$46b zXEF$a6(QKTSgotN%XcM_4nlKUfCn*s8Ar|NZsrsuDFU7TNGkZK^?|IS0#gQi_&B`A zF4p*^)8ZP(^dXh8D=ns6Gi!I<$b-;GEzS6pgL5`e`s%eZsT~Ly2qU3k)fhuJZg0P zVsBEldl65%R@mW#S)PJKp{al}D?d^;-*|^vnya?om}3m#8}nZIQs&u~<T5F;|B(X$CckI_motixL)?6<8l%(_(PbSh=K zKG#@%hN+IrNbCSo_Jr+Jjyoy;Y=y-SFLbDLd8~XTDctm%A~h-8Ogiz3K&54)Coe;+ z_;8jb@#_HzUb)i_`CRUwaoibn?vlE4>C=`~k@Porwlu9FfQ)ig-Ql7fV=Z3qJvf%+ zdpja9P6f1?u8g62tw98dEE>4q{G{uS^^v?7XMtJ{hIIBdk@86tQ^Liw4nMN;ZHas^ z({@#k4keG9DY2xrxm~Ll7F^qZ-y^K+r0~^gX1)X|q{B0=k?3MxHK*Ug)MmnEYJ?M6 zS`Tp1xbH@P1IQ5SBx#88Y5X*-wpqz&BjI6Pq0n%3agJurB5)XyXZRxv^-}p5okc5w z{>7eryh(S?ew|=)7X|nQua!kX8=erq$9A84Qy~LB3Eo^IcE(&vQ=qX0gp$$)WT-I3 zcET0%u&2vbL(ejHy1R^vLMgX2HlrQjN}KtT zxB3zWXxivW&XIrD5#})bF~HnW`L=kL5Zt`=5*PW$QA8c#@o`OZQ88{3M9o7VeVzG2 z2rcixe#BJS1}i66p2$Y0;8%eDs>}6BE=D({8Q!#qjv0TZf%^RDeT#?c2b?aGM>76G zkLj1l3RrjxiA>fJ@t=;S9SxGa9`J`$j2oXgvYcPH9g-I;8M`zyr>!=(BlG|Ml~6Us zk2j!4)h@5pgf?NT`sM{`rQxQ7x7iAa-P*BHjkaaHdkt^5)_i1X$NOWEl!JY0U+E$lTC<9OPpfB zeT!h=W_?tt#;#a~@5O)kQ>h~DCUgAHablEUs(DW3BSvbaeGmI>SPp~U=`uxOpZ~(3 z!_5~tQIcvUDmEC~>@XHc`A_S8<~PDd>#Y8*Us{uU6rQ{|So9!N{! z0*I=)GA8Q3Mt+O?Al=H#ctKSkni{v;MO};IaB0$NsAvh=22_w-TiI7v<$`JZdE#DI z=?bH5s-~>)#GQW#R|p@vm16$-OxcjEs_gT^CCzwo=xmp!5_dBH9C{1m^AW7Wcl z{ze34D)MZB#CSHeKb9y+h%Ro5X++Yz24GF5O7(z^JQ8-24J5x4HtI${qY6l4kY6~O-c)wX|AC^qBKq*M2(tc%A zSHL3TqAB7)mNS^SP-l%=Pa~yt0c;heV8WTXRIT(nF5={Sv|((uSnARdIsLZQw&1bA zXEHe!n9pgl_E!R9aqFFenC43O_)aUe5u zBDTqSHGPmQ(5+wmVl=?Q#M?N0M@%T3VluU7L?X+Zxo_%EZEoRk4!So?J3gpNPTQ0Z zW8yX~(DZz!vx=+4&H24FYD}F&6Z|W8TKQ63dMd|it}b+gwO)@5m!KiA+2*a1 z9=BpDx7^PQ?|tKI>1+dL0)R!eqgm566WHZnFYoE(CF|MD?_WqDBubvjI%S0<`QVMW zI0~!&HJ%>*a%$@0(br9GV%mPMc~3aficv^Zdxks5pgp}~sebA*mbwPL7G5=JT-`^( z%o5IlCj2lHLwD?Ld2ocN?b}@7b8;`$R*jCvH&Ph=?$IJk`Ho z3Y~>aw;R=jmWs0<27qqWNN*WYDY+bNE_W_v(lcLsHec6GDm>Gg1#Lf9ST4IA~mMUF>HJnW`%)=Wr6hD^4nx}GuoOJlr_FSkk3)@H6}l*uSOS*E6^!|+J19ZE|iOOe&A0Y0$z&27h4@|PuiX;QkrM_ zbywH}lGZ!^?AFxCf)3WpbV!CO4)bJ9l&1!gcSqQG=UUFxKIUGvhI+7lx$iG6t)bjA z>?f%X(TRwqe;0j6AGEH`4L5PZp${r{1nFhR;{1A54o$HQhLXNP&O4U%Kyw%;}5Q9lDoR5YNG6S32AAn zcETR7EME4(C>VYtwc8A?O)TJI-xOp=5-}Dqh!xyM8HGPEocg->gTR`;HSYc~UEU8@ z?zwhJl=Q?v`xuDw&O(=~OG0Vo$&*0g>B{4;#~Pr>3)k~LGOtsXSJ zuOzK%*gqdx@N&Ut-*bseRJ3)p-LG%X^-{-U7$JVW``qew6un($Q%c?LBKtXn9`EzOn=ae?J=urnZD zrFzq1J|jo2;H1-z;{efn0{Nr9FjI@OA7Y-ulyEX*i?cVYddL+;vggn+tmQ+^v#ZK) zGfMGtr>RK%T5V5fYkOEgCh7Ga2`Ykd1jOZdpz!F*^ok4zf6Vl=f|80{rR;R#YVngm z7nd?>Jan|hC8Z6!qBud?wN-io#kn&Z`T|3CB0Z7Vg9FG{2~b-?SK*uSGPB@nr@cB9 zgL=QFC^z#&eYL)g8j5|_ABS+k32Y2aZ^S4==T1ZCoFT`_9l1tqn-POmJ{Hsq1Gu#j zoI62I(=yoi3hRYfp!Y|wMy$+*wtn}5%esNJ9rjt3aXd?u`Q}-5nnLi+OxU;q&Tl>_ zx&+xtJ3jfL!0^}Tam@w&Rqx>)T5Up^Q%P6pe>8`aVdP^rm-GF+ijsCr3jtzRP z$Kzc$DNjf3pnPqWW1|hMy_0_Q20*WM-+kq>ZJ-%bK;L7J#rwd1rF-?VgLKDHD8NTA zeqXnC<;E`PG@ui2$Bi`Zy1nW)zz2oI*`asf3XR0cV-NOx0qp3uOdG`7RZ+WIL2*-ig+LX}aoIypx)4PfKF3U+Ro zq&~v!FiiF$!k)brDRj`mPg_VxRpn(rc@{7W%pPZV#}`@{RYv#IrA%aau_p}j-3)^%+t7JqepFt0B6SVnLZA$EZP8Ux*^%sL0QYQp&1p+@8IH>v4oU2cIoLIHP@~**gVcT9*J+v_gyF$K zhPn1mB{Ig6lp-I#`TYwEsCBdE>;Yx2BjpV#_*TG2+GwBqPURISVtPHt;!WC`pZ6R}0A7%*EV|J%8La_?kq& znzRo?M3np?sn{zH$nUTPgN`L}?pCR@c@b!tts*Me`(!MLzbS^sf2jG^o%2GyJz7Yb z+Smh;3&Qu##rjg;`iIZyoXpB_Sfi`o<&U7s3v}(E&E_j(?m17}oz0ymuxRJz4_8<4 z&U()3sXL-S-AW{Jl8q^B4#~IZoEjGABWapSuTe&UXJ>l_0O5Qr9g%tG@f`0&vs?rs zXZw01CJf36R=B90oKzz5EBP$=7Yn|2a!m!8LmCZWh4X~LE4x5S zs$Nhv(N{BlZVhJFha5fonu(WJyGIvjh;(|7`a-6!s?#%E->7!&YDxBgU(84ru^5Gh6=qfA-lR_U8CbP;xIW06)r^#HlDwk5m z2e|Jrce14z}|=Xi3SFiNB%G2 z0S8uKqNoD)AH(=NHn9YnbE5(LRCFCMMDc_mlbKnYHoFZgTUa&_8GeUYsmS~G3pb@` zHin`P@7gyAl#5KzU|^8Gfq&3}cp4F_aR?g*S}lILOna;u_5j|XW`_|G>0!1>+bbV6 zLJ9=1aM+Q|f{Fgf_$T;jO7EDA(%q`FsdbQU&Dh&qcn>UBAQbalu$lr4WfUvL!&2oNh1X3=^V9ok*qq`CIXFuO)#nFJ!q{DV39&Yx)jPC ztI4a12&9OS!+gnL*wOr`VUU)v!;rG{Pa{ENWiII1?Z+ksS$BV~+KypVdPaUo#+rWT zas`6Oy%oH#j~}(Lq+9^>D#=YPVg=Ka@>{!9ZK~n)^GBlZ7K~!Luf|L&vXldOhJDyfBY9bPL=`sj zNUW{p6?%($BCMR)qTwdzi3TdfA!8|*-18SG42~dgLdm%zQmd@Y**VK)oS;}0!*@sf z)ZdeDope^aGk@v6gJA}m44v>4R)_lIJf9jpZ1e|fRhexEavckd@8GCtLoUZ6#bZ!p z%qJS?$!!}XSgd~gNSj3BGox#2OK)hb_6s{2!Y0xIA!NN**;ytW1gr?ueB=1ZCi;_@N!V*Ft%JI44JI-~v;`Bpfd%?NYye3Ad zn7o)3@JM7bYdMa;99J51>WD>iZ}pZ)Ob?U}lTmunbU|(- zyX|^MZHJy#HP&Qu%v*u~ z;+P%QE|@j|TesZeQfhP>vFCZkYIy)N8M}dPzWlgIJHDzjz$*$)uw9PEEE33yL)S$P zXcxF9>8hBCF`Lxlm!hE^z#G&dP_(v<`yqTblnK+J&0`*1e6FNuNKlHJi}c7)w{^U$sMRL+31zSp1?~UKu@d-btwyVZK8LkS$7C@HEmLA=(X&Eg}R-?(hm(hbOM`aL-mo3{v>JhBv^ za>{WFrua)ic*v89mR=MRb)Zc-JAMG1b2)AMYQ90Q(&mky20(bOayfIGGd z{f$WEy6S#U*kCsE*l;%UxqKeG?v@-L6L=q~sd9g_Fj>uB(I zFjE&&Es_u)gK{Q^ngB-#jEuSE>C`jc?Rk=rFWA++~xPKFAKN+dJ412o*pj&!UVVKpHhRJ11|ynn^WCu zZv{0bzTD1C#gkX*HW!@C^lMeFzG#{YV5K98Y5QGlFlrs#y3pXDHkpBDrizAhPhs#^ z0^e^@??pkck?bgneZCh1$K{)?u4xb$Dt9>5)cQra%_a-O~_ZDM-PX5+N>#S+(;>mVh!0`)PRTo}8$hW3^Zczny8o?-(->Lj&0B&8h+zV(3qcDd>oyB}TOZYi`(v?E)Ur8XzDuOLkAJJjN zbYSXa4JBVuSxJ!@t;HV$l-5l|2#vBN9uky#_zPB}=DL|?Ao#+B9lpZd}QkL}e@BlfuLIQY7 zTuWR_eW{SEEqYl6mjhTciI&&nmG9{y;)wd;nF&gQkuHVpz2I66I5^hFg%H`@a4TwC z(Tm2y*8?>1POKdhCP+@ps+c-zs_MO77^R^k3;UU~-Q`tA=?I=H2H%7-qKmE%x6`gh zupGQYMINCk3VpAuYA8HrcK|0S&eVhmZAm6Upzv?jP%FirRHQ7sCfW80B@n{(%@5fz z2AaJVp+7qUW~39upnVO7e}Ee%1wg;Qp3T3R`mf6(9C$sJLuA-S_%|2V1pI_&)}h-C z5Ft$r9KXJc?GWH%4zUu&a;gjPvA>-^?R@h`uX+{2CI2-f|6^TYSP)RU1uxh1T0R8v zS1pBorhR~XGAx$fCFN0sj(hKRYRw6PVcL6ai}6ka!SX_j49f@xX$Z^1gSH887^c;fUCT30)EZwH*a`J3Q}6M(D}V`VRdo_I#~Uy^ zjLCf-99a%9J})qi=zwXBw8piaa053=-9z0q!uYyZAvoEsc>hPVKbumCnu@*ZGe%_j ztXSz`_YjSBv}gmbfhADw*K_ys{^)zcn_r*_v_h^IP`7&mp*;f>!R1gV2T)(J2I~Xc zU(iWRtF0j$PfvrHt|{z?#Xa$s4%%=;`V_S<;+0e}X}ZRH)c`h11V=F+`n@8%B3iY3 z7M0wbx734%y@S$U_DEnpk6%I!H;~)|dIn+5Uy3M|svAZyoXx?nCuw|?9LX=+(!rb~ zk4NMT!Fq-rc+b=xbiD^{5PJr$Wvzdfrcks`Dvpl`6y9qI0oJ22L&;KZH0e{(1(^>w zRC_t1i?O0#EDXRug|pc?PPrZFAwBRD&zvWRv9+QYg*c2qU`iav7baZOc-R+?uwj^X zp=psG*;8ehAmqSCKYfz-={$D1a*00vw}?Wg-Q&+scrY;3za9U->X=LuAm%sLzpek4 z{Q@hVkbPsAtHH`#Z8CUpJ?XrwZo;lToR!=@1Hn9Aw}iH}MiH89d5Q;^NIu5&zpJ4$O2+yvCF&)D)dBQO&$M4Q;97nzR zP&1QLVE<;eB+FNAfD_}oB(g+5VX&SL#hnhs{;q;Vjmb&QVY^8=Opb-=Ft`3NT<*Pv zzT7o{&fQgnp2;(qHe1*ZkkFZ}`+l0xBIyFDE=abVbuu?BP9~*WuIdp?lBi2B6%U^h z=@)ca(WqEep>ykB_-bOWJ~pPaovDaGQ*&NM^HSjnU?BmmeHy1m%eIFE<;kE#uvt`i zZm~VtU(L>PV6C=!tjz+k)`+&P#ZP#pK1BXOh+U5MLDzq!84u|HTblt6fd%&eMEH%7 z5;))}w%&>=|Ej8hHIlq!b${{Wzj_=nu)pB)KNdj@ye6Uqwo4%cxul38Vo8D4BxJxf zNhGqMe{ko2q#(Hei2?)LCkN(BQR@$zE2{kWpC0vpI1N+&167S&zo@&IIkTA98o9VA z$^M%(j+dg!e=#rK{|L6A0V+@v00qAzk^KXK|BGM#fx!Qo9uLs+JJ~-FCh9v8L@yt( z{5vh#{NIrOUZDS(eUSk0`a3mU=3l4(zomb7l;qz@|Blim{%`i;Kr|@=poTOG%)Hb; G9{&r98N(a^ delta 11855 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

gNNmX*x#&3qe7Jz06Y zqQqviNI+o?o9RFD)61czlh~N=QgMC;T}b$%45;^ZJdmA?oyBy=dK=cG&37K}|5?Bd z3%e1nX%1h91PTO4fh1d|ZP^%v7*dQf6+Q57yicottYf=DGUDT4@|-h=mp)_;cJ~RC z2<>M?>?=?FKv*9cD4e^)3fWum<1rn5+@S^t(X?LVc`>0Gs+*?KGSC0*kB>SWL(c^7 z$;Cnxx;c!>;CHBtwjsHa%bOR8%H0Q{pvQ5Za4SJf#Hg+wI1Yb>lW%W^czg`rj-AXx}*eqOd(+>^u@xV|TEGV$`mw47IcSt(R^H zgaX}!CZ2A!Cc1v^X=LW*AE`I|C^En80-?5RFdwqps>{WxGuCNW?Nz`UQY7}_vS-vl z9@cI2z+03}0Lv?v5;^VhzSmW@K~gKnB>qJgBmQ1t3g-o*6|~#shirJtc&L-TZQob; zSkVWbzGH@4ZWSC7zESl5^%oGiYT>s^NIPwzk**+ep!gV+LrHJw!$45CSCm4dT8nT8 zKjuGZZ%V93gr-zdV%0FT(ux%Nk>@OVhmy!Js9P&Rm>Z88k0tq(2^*?Y3R%U2ZlB$S= zxC057e>jPdi8Oq8Nl4`QB9m(p_p-wH?qvdI_y@pWbo{Ydb1u*peBPP%a4_ZP3-~~_ z_Q!`pwGkcjCCB626lAMYMa|WH2vt^E6jJzBqft5OuY4R-=F<}=(<4aENBKtQ zdzOo5gv*jg0F-ORq|~UTt%o1$VG!iS4Ej)Dn4LzsOv*FEkL)xv`F>FuLNl>47a&h` z^49iDHczGBSL7{Op?iU}E_MF7TQgB#1))Irqi1n~DuH)=*z&#MX;-2XA=BSul*IdX zzV#jtMR^lA?&=ToiB82QrKPSG$vt1t zelb-Mk8MBY)YNms>vP~@GrnXfz4iOw(tUuBqIaRC`>ShT|4wB&NGL3b{|`SmY)j!l zq7r^rQvE*`2Mi;_N7mq@r22n62?PZBKN!RRj(H-mo{R#NA_=%chKVfWZ|uMM2i*US z`{$v64E%>2AB--GO!f~B@$b82wEqeeqW}xZ5|dE@N~-@pUE%##5C=8bQ}2=6(jkt SwLgf1BjwoOye0m5`~LvxhLtA( diff --git a/src/chat/ClientWindow.java b/src/chat/ClientWindow.java index 78216e9..8497f2e 100644 --- a/src/chat/ClientWindow.java +++ b/src/chat/ClientWindow.java @@ -137,7 +137,7 @@ public class ClientWindow implements ActionListener { if("".compareTo(message) != 0) { messageField.setText(""); - network.send(new Message(network.getUser(), message)); + network.send(new Message(network.getUser(), message, false)); } } } diff --git a/src/chat/ConnectNotification.java b/src/chat/ConnectNotification.java index 957daea..699c3ad 100644 --- a/src/chat/ConnectNotification.java +++ b/src/chat/ConnectNotification.java @@ -1,9 +1,16 @@ package chat; public class ConnectNotification extends Notification { - ConnectNotification (User in_author) + private Boolean outdoor; + ConnectNotification (User in_author, Boolean in_redirected, Boolean in_outdoor) { - super(in_author); + author = in_author; + redirected = in_redirected; + outdoor = in_outdoor; } + public Boolean isOutdoor() + { + return outdoor; + } } diff --git a/src/chat/DisconnectNotification.java b/src/chat/DisconnectNotification.java index d1bb8f6..17cdef8 100644 --- a/src/chat/DisconnectNotification.java +++ b/src/chat/DisconnectNotification.java @@ -1,8 +1,9 @@ package chat; public class DisconnectNotification extends Notification { - DisconnectNotification (User in_author) + DisconnectNotification (User in_author, Boolean in_redirected) { - super(in_author); + author = in_author; + redirected = in_redirected; } } \ No newline at end of file diff --git a/src/chat/Message.java b/src/chat/Message.java index b2cb704..6d4331b 100644 --- a/src/chat/Message.java +++ b/src/chat/Message.java @@ -6,10 +6,11 @@ import java.util.*; public class Message extends Notification { private String text; - Message (User in_author, String in_text) + Message (User in_author, String in_text, Boolean in_redirected) { - super(in_author); + author = in_author; text = in_text; + redirected = in_redirected; } public void setText(String new_text) { diff --git a/src/chat/NetworkClient.java b/src/chat/NetworkClient.java index 121ab90..e21a6ba 100644 --- a/src/chat/NetworkClient.java +++ b/src/chat/NetworkClient.java @@ -38,7 +38,7 @@ public class NetworkClient { NetworkClient(JTextArea in_chatText, JTextArea in_knownUsersPanel) { - user = null; + user = new User(""); chatText = in_chatText; knownUsersPanel = in_knownUsersPanel; known_users = new ArrayList(); @@ -123,11 +123,11 @@ public class NetworkClient { System.out.println(usernameList.length + " users currently connected"); for(String u:usernameList) { - known_users.add(new User (u, false)); + known_users.add(new User (u)); } for(String u:outdoorUsernameList) { - known_outdoor_users.add(new User (u, true)); + known_outdoor_users.add(new User (u)); } for(String a:addressList) { @@ -193,9 +193,9 @@ public class NetworkClient { } } - user = new User(username, outdoor); + user.setName(username); - send(new ConnectNotification(user)); + send(new ConnectNotification(user, false, outdoor)); } return connected; @@ -229,7 +229,7 @@ public class NetworkClient { void disconnect() { - send(new DisconnectNotification(user)); + send(new DisconnectNotification(user, false)); try { Thread.sleep(1000); @@ -244,16 +244,6 @@ public class NetworkClient { } catch(IOException e){} } - for(Socket s:outdoor_dest_sockets) - { - try - { - s.close(); - } - catch(IOException e){} - } - dest_sockets.clear(); - outdoor_dest_sockets.clear(); } User getUser() diff --git a/src/chat/Notification.java b/src/chat/Notification.java index a631b26..ab148f6 100644 --- a/src/chat/Notification.java +++ b/src/chat/Notification.java @@ -4,12 +4,8 @@ import java.io.Serializable; abstract class Notification implements Serializable{ - private User author; - - Notification(User in_author) - { - author = in_author; - } + protected User author; + protected Boolean redirected; public void setAuthor(User new_author) { @@ -19,4 +15,12 @@ abstract class Notification implements Serializable{ { return author; } + public Boolean isRedirected() + { + return redirected; + } + public void setRedirected(Boolean in_redirected) + { + redirected = in_redirected; + } } diff --git a/src/chat/ReceiveThread.java b/src/chat/ReceiveThread.java index 57aff9c..b7b6a4a 100644 --- a/src/chat/ReceiveThread.java +++ b/src/chat/ReceiveThread.java @@ -37,116 +37,118 @@ class ReceiveThread extends Thread { } public void run() { - ObjectInputStream in; boolean exit = false; - while(!exit) - { - try + try + { + while(!exit) { - in = new ObjectInputStream(socket.getInputStream()); - Notification notif = (Notification) in.readObject(); - - if(!(notif.getAuthor().equals(user)) && !(notif.getAuthor().isOutdoor() && !isOutdoor)) - { - for(Socket s:outdoor_dest_sockets) - { - try + ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); + Notification notif = (Notification) in.readObject(); + + if(!(notif.getAuthor().equals(user)) && !notif.isRedirected()) + { + for(Socket s:outdoor_dest_sockets) + { + try + { + ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); + notif.setRedirected(true); + out.writeObject(notif); + notif.setRedirected(false); + } + catch(IOException e){} + } + } + + if(isOutdoor) + { + for(Socket s:dest_sockets) { - ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); - - out.writeObject(notif); - + try + { + ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); + notif.setRedirected(true); + out.writeObject(notif); + } + catch(IOException e){} } - catch(IOException e){} - } - } - - if(isOutdoor) - { - for(Socket s:dest_sockets) - { - try - { - ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream()); - - out.writeObject(notif); - } - catch(IOException e){} - } - - } + } + else + { + if(notif instanceof Message) + { + Message m = (Message) notif; + displayArea.append(m.getAuthor().getName() + " : " + m.getText() + "\n"); + } + else if (notif instanceof DisconnectNotification) + { + DisconnectNotification dn = (DisconnectNotification) notif; + + displayArea.append(dn.getAuthor().getName() + " has left the chat.\n"); + + known_users.remove(dn.getAuthor()); + known_outdoor_users.remove(dn.getAuthor()); + + if(!dn.isRedirected() && !dn.getAuthor().equals(user)) + { + exit = true; + + socket.close(); + if(!isOutdoor) + dest_sockets.remove(socket); + else + outdoor_dest_sockets.remove(socket); + } + } + + else if (notif instanceof ConnectNotification) + { + ConnectNotification cn = (ConnectNotification) notif; + + displayArea.append(cn.getAuthor().getName() + " has joined the chat.\n"); + if(cn.isOutdoor()) + { + if(!known_outdoor_users.contains(cn.getAuthor())) + { + known_outdoor_users.add(cn.getAuthor()); + Collections.sort(known_outdoor_users); + } + } + else + { + if(!known_users.contains(cn.getAuthor())) + { + known_users.add(cn.getAuthor()); + Collections.sort(known_users); + } + } + } + knownUsersPanel.setText(""); + knownUsersPanel.append("Indoor users:\n"); + for(User a:known_users) + { + knownUsersPanel.append(" " + a.getName() + " \n"); + } + knownUsersPanel.append("\nOutdoor users:\n"); + for(User a:known_outdoor_users) + { + knownUsersPanel.append(" " + a.getName() + " \n"); + } + displayArea.setCaretPosition(displayArea.getDocument().getLength()); + } + } + } + catch(EOFException e) {} + catch(SocketException e) + { + if(!isOutdoor) + dest_sockets.remove(socket); else - { - if(notif instanceof Message) - { - Message m = (Message) notif; - displayArea.append(m.getAuthor().getName() + " : " + m.getText() + "\n"); - } - else if (notif instanceof DisconnectNotification) - { - DisconnectNotification dn = (DisconnectNotification) notif; - - displayArea.append(dn.getAuthor().getName() + " has left the chat.\n"); - - known_users.remove(dn.getAuthor()); - known_outdoor_users.remove(dn.getAuthor()); - - if(!dn.getAuthor().equals(user) && !(dn.getAuthor().isOutdoor() && !isOutdoor)) - { - exit = true; - - socket.close(); - if(!isOutdoor) - dest_sockets.remove(socket); - else - outdoor_dest_sockets.remove(socket); - } - } - - else if (notif instanceof ConnectNotification) - { - ConnectNotification cn = (ConnectNotification) notif; - - displayArea.append(cn.getAuthor().getName() + " has joined the chat.\n"); - if(cn.getAuthor().isOutdoor()) - { - if(!known_outdoor_users.contains(cn.getAuthor())) - { - known_outdoor_users.add(cn.getAuthor()); - Collections.sort(known_outdoor_users); - } - } - else - { - if(!known_users.contains(cn.getAuthor())) - { - known_users.add(cn.getAuthor()); - Collections.sort(known_users); - } - } - } - knownUsersPanel.setText(""); - knownUsersPanel.append("Indoor users:\n"); - for(User a:known_users) - { - knownUsersPanel.append(" " + a.getName() + " \n"); - } - knownUsersPanel.append("\nOutdoor users:\n"); - for(User a:known_outdoor_users) - { - knownUsersPanel.append(" " + a.getName() + " \n"); - } - displayArea.setCaretPosition(displayArea.getDocument().getLength()); - } - } - catch(Exception e) - { - in.reset(); - e.printStackTrace(); - /*System.out.println("Socket closed"); - dest_sockets.remove(socket); - outdoor_dest_sockets.remove(socket);*/ - } + outdoor_dest_sockets.remove(socket); } + catch(Exception e) + { + e.printStackTrace(); + } } } diff --git a/src/chat/User.java b/src/chat/User.java index 00d115e..698a554 100644 --- a/src/chat/User.java +++ b/src/chat/User.java @@ -6,14 +6,12 @@ import java.util.*; public class User implements Comparable, Serializable{ private String name; - private Boolean outdoor; // private String address; - public User(String in_name, Boolean in_outdoor) + public User(String in_name) { name = in_name; - outdoor = in_outdoor; // address = in_address; } @@ -25,10 +23,6 @@ public class User implements Comparable, Serializable{ { return name; } - public Boolean isOutdoor() - { - return outdoor; - } /*public void setAddress(String new_address) { name = new_address; @@ -51,5 +45,4 @@ public class User implements Comparable, Serializable{ { return name.compareTo(otherUser.getName()); } - } \ No newline at end of file