From d78b2576718facd4394e1e1ca3faf01ec8d11437 Mon Sep 17 00:00:00 2001 From: SUN Chenliang Date: Tue, 11 Dec 2012 16:32:35 +0100 Subject: [PATCH] fix bug timeroutcallback transportOptions null point --- SimpleClient/MainPage.xaml.cs | 7 +++--- SimpleClient/SimpleClient.csproj | 5 ++-- SimpleClient/SimpleClient.csproj.user | 3 +++ hubiquitus4w8.v11.suo | Bin 257536 -> 292864 bytes hubiquitus4w8/hapi/client/HClient.cs | 22 +++++++----------- hubiquitus4w8/hapi/hStructures/HOptions.cs | 1 + .../transport/socketio/HTransportSocketIO.cs | 2 +- hubiquitus4w8/hubiquitus4w8.csproj | 11 +++++---- libs/SocketIO4Net.dll | Bin 40448 -> 0 bytes 9 files changed, 25 insertions(+), 26 deletions(-) delete mode 100644 libs/SocketIO4Net.dll diff --git a/SimpleClient/MainPage.xaml.cs b/SimpleClient/MainPage.xaml.cs index 716d5fa..a1920e9 100644 --- a/SimpleClient/MainPage.xaml.cs +++ b/SimpleClient/MainPage.xaml.cs @@ -200,6 +200,10 @@ private void setFilterBt_Click(object sender, RoutedEventArgs e) ja.Add("u2@hub.novediagroup.com"); valueArray.SetValues(ja); filter.SetInValue(valueArray); + + Debug.WriteLine("\n-- set filer --"); + Debug.WriteLine(filter); + Debug.WriteLine("---------------\n"); //Remove the filter. //HCondition filter = new HCondition(JObject.Parse("{}")); @@ -237,8 +241,5 @@ private void clearBt_Message_Click(object sender, RoutedEventArgs e) Update_TextBlock_UI(msgScreen, "clear"); } - - - } } diff --git a/SimpleClient/SimpleClient.csproj b/SimpleClient/SimpleClient.csproj index 26b3475..5ed5fa9 100644 --- a/SimpleClient/SimpleClient.csproj +++ b/SimpleClient/SimpleClient.csproj @@ -143,9 +143,8 @@ - - False - ..\..\..\..\..\MyGit\socketio_w8\SocketIO4Net\packages\Newtonsoft.Json.4.5.10\lib\winrt45\Newtonsoft.Json.dll + + ..\..\..\libs\Newtonsoft.Json.dll diff --git a/SimpleClient/SimpleClient.csproj.user b/SimpleClient/SimpleClient.csproj.user index b29230c..30f5edb 100644 --- a/SimpleClient/SimpleClient.csproj.user +++ b/SimpleClient/SimpleClient.csproj.user @@ -3,4 +3,7 @@ True + + True + \ No newline at end of file diff --git a/hubiquitus4w8.v11.suo b/hubiquitus4w8.v11.suo index a97dad5ac01ba62e164bef288bedd88fc22b763c..0196c59aa86b43488cb48f4691e67c58bb2d8865 100644 GIT binary patch delta 4887 zcmds)4N#QF8OPt}eeaGF?&J>n5)ckV{J>aLRInL<4~bhrx8_^8D$gJX_A&^OxhY_gi~I>n!&~mcGav09xvl>*{HMctLy0%#E`|Owkg{ z&Xdv1Js^Y$GDKwGMhUD?LIIn=!50TX76Monj+k{vp*ha?Kt2GdXbt9V@R}E|#`Qd1 z+3>A>X&(DdJ%D|pJs|ieVczbzE1x-RCg(Y@DIC~rj@eAsV>3DLGcy=@pP5{KyCUz; zR2sY9!I{6I@bBJ=oZsY4S0WbM109hpWOn!|?dHPEfsT|KBt8NkgMGlKydUX0Q12(> zGU1F%jQ1&>K;akQq*v)Q;xpi^*b}&30Hn0CoUS819#%G(3Wj60EWh<57) z`C$u<6|R_U3+wmu(=oAc9x%CY#F(g5b5Od7513|bfbbL1uJ#viCB%wx+DPLmNd76; zHE0v%-fJ{QmN#hGcT%oPWQgQuc~ETacLycTR*sYB_mLwpX-C=Hqn~c=^YiL8w%%>! zyxd)`$Zc>C%Pr%i>x7m{heTV*G;=Snj%Sz$#UkruON3uFkNALSvrg(7rQF*>DgGmq z)wigcHcM)x)uLo@lpI&CT5JdRd^K_3f|+y9l*cZ6ZrkX$<)@7_NX*j0=?&J*sJcK- zqK$WI9ZycM9UJlDly_>krd3o1w9c(4sSvl+ME@D;kdty<`MgaQGo^wzz9qr0Pum;0|bH~ zU;$Rp69fYru!9iL3xt9&5Dp?hB$h7y^C(Qov9!3=9XUpr?17JZ3A>6?rKnZCFm5oi~gItXj}7gLd0^-NXKb zJi`I*=eYpJ%heZYs64e_vxdyfnwG_7rZMvu6%>p^O0Kv_uLtwtQ-bciLH_P4jg|0Z zi-9}lrY*Zr#=DGz$A5JAq?2A%7X}2Nt9?o8YfID`OC*ZfDqlV0W@I{e@6ad_AJW(3 ziU7P~Z#EXDw|MZHbdDi4ev4iA~AKY&FQ@n^bK1E7B!^!vk(4-p0=VZztuW zs3OlnD{X3(O*{XltZSgis?A!pkqr7Cw^omfU9PR85$Z-o{zljSKv6QY4xhtyG+oS2 z8Y7+cG+j=`(W6(_lPlnzMpAX>Foev^@XieLehCq%auPnN3pSOyl|e-4@P18A)S4ccMAvkO1+j=)?H%Q;kvxE(u8UXbni*XphvyI zWU<8ilk$_*HX`rJbFOJGAYN)o;MlwEwKG*Ojl9LZnoa|{;&0&0e7AbR-*-D`@ zUnx))^K)MgwW4d*#!!rGEbSQOjYusmX8~3fs!u|Th-OFE?A9}mSDA{ zckX{xwAqb)aO(o}szFLl^5c{)L> z6eay*_1#uAcb<8T?ze2T1`5v1n+v>Bi-ZN!Y71H_H(tNPv5H(VqW z9#w?XaxQotZt|n?xlhjR*2;|U>C3aSvT>8<60>yk-9r(-(g(_0z0{5LOgC-6ydzrf z?5A}z{N8eYvStx)3`)~oIkYiacjnUvA;Oiu=AQO5cl42m#^NyjV1)Jy(fsSp?zOX* zPwHN2q$sMi>2N-0ir5el!>{~V5AT!hp89MH$5MNDx&FJ13zNnP)FyuNyfJqg?N1Mh2rnta8r4U^Ti zwAg-TVaHop`XT$~D5bn6xbs62@oKbuazCZW&i$0ESG%=sS~u77GeN(_l6&1jX4KQO za{Q4y*K=*pAE#n>EP-eKD=N;4%%2 h24F*d=bL4niAQ1$pN>y5-79_0NfQ_;Ho9`ZV z8mUSvb*10UV|Qogo7tJY@J)aCO6E{Sl{DrJpJ50BpqibVo8uXXhC9JX2o}xKQHqF0 zGF6GVFC%cleC+7iKhQYV#O_ypqTWN;I#&!?4J|68Gip*asZmj-s)STeJ06#OBv0ws zF6lJ+01Q)+%*){;?_u{8C|lt%qfgDz8p}6J&)erp``pfw`_ohBR^Z$|dgI?tYBU$Y zOcszjO-;EoYn+Kg*!Z1!2eHhb?N8|Lf=(yadO-gSc=b9{G-odZTLvr#%7GPte$5mc zytUxg06`$?5fk2Tg6RjsKqT#n)qDcuMaWEl0Qy7VN5BYh1b7MHxt9}E4^GokGr3cp zObh6X)8tEO^v!81^C#z1^ia!tk&2MX>Emy<)A73Mt!Oeo0WmwNdPPm=wS0ym zi|sJDo`Z6=P<@LVOcQJ-VEaFyCKqqw(9pB0cgZFXWnjjen3Zf=-6`3~3tVqNn=r8u zY|6yzDHDf3Y9ftIU^RxGb&7Q!10`&@06yNe1I!VZ?sJI-nafIqSx>k`*vS{zrT4kT zMzatsN0fIsKM7{*yex-I4)o&0w2RYt#c_N(%S9)qX@Kn5U4`;5z+ZuDzz2YS=`Jm; zW@r8ZOaPO>E#Mx&UUO1G>{{UK$o%aDWj<<(ogrRW1SJvJJ0=Xss-Y24y?_SdVX@XH;!|z^bm35mGXzRL9oI zeR|(}6wtlvWdI%4ow1G#gVO}!Fbef}y(~l##u+_SFAMbd>*cj{zJyr9Ll zJzs0t+w#>XyL8nTL<20Acw<0;X5Ac-_eGHS^TV*b7#tX23 zLUH@HriwL@T&YKIQMTId$kX9A8GQ9B2_0*bF)MtVOj6rR9^^OYHN9twvWL$KuMW3M zQ*W7}J=*tz$hH#_y+GOi7P!O_V)_8+TK&ijEf^jX*^X)i?16V_Wlf#2$LKJ+jVJLE z@H@b_AUQa)cfPWD&D-wt{-I_g*7S-P;W^gZLuY1*h3b8r2}iv|`qVATL;hSWKf*uK zdaGUT7sEjjjJr87MNg|O%K|zuLlw%GvwAp&ss1+UwBDMbhbi*gV*P%dtoFG^zVxS# zhim-jgV$R#*PdCa!i#c`$I5~nfMCSeqkAUk9KXnAPQ1V}kkdME*7827SDE?kt&t~Bn2;9W_fiMvDiWqs~ZOlA?)1L(_Q#u+c zZukkOqtX9&D6a#518xAbhgvrN*G=l+Vaqyf(WXK@Rx9&Q1Z5FfMd#_Lv|{V!ZyaJ5 z>904)@6km)bdjFZO_!*2`A(z9=rUT2y(peelu#GsZqQa^H;Spp*af~4Qn%fhyhb~; ztp~i~~txLOQ8~r3G$nF=G?~jg~&VT)Gm;VHZ Cb<|4$ diff --git a/hubiquitus4w8/hapi/client/HClient.cs b/hubiquitus4w8/hapi/client/HClient.cs index 7ed2e7d..3493292 100644 --- a/hubiquitus4w8/hapi/client/HClient.cs +++ b/hubiquitus4w8/hapi/client/HClient.cs @@ -59,6 +59,7 @@ public class HClient public string FullJid { get { return this.transportOptions.Jid.GetFullJID() ; } } public string Resource { get { return this.transportOptions.GetResource() ; } } + public ConnectionStatus Status { get { return this.connectionStatus; } } public delegate void StatusEventHandler(HStatus status); public delegate void MessageEventHandler(HMessage message); @@ -108,7 +109,6 @@ public void Connect(string publisher, string password, HOptions options) if (shouldConnect) { - notifyStatus(ConnectionStatus.CONNECTING, ConnectionErrors.NO_ERROR, null); try { fillTransportOptions(publisher, password, options); @@ -133,6 +133,7 @@ public void Connect(string publisher, string password, HOptions options) this.transportManager.onData = transport_onData; isEventHandlerAdded = true; } + notifyStatus(ConnectionStatus.CONNECTING, ConnectionErrors.NO_ERROR, null); this.transportManager.Connect(this.transportOptions); } } @@ -187,10 +188,7 @@ public void Disconnect() notifyStatus(ConnectionStatus.DISCONNECTED, ConnectionErrors.NOT_CONNECTED, null); } - public ConnectionStatus Status() - { - return this.connectionStatus; - } + /// @@ -225,8 +223,11 @@ public void Send(HMessage message, Action messageDelegate) { message.SetMsgid(Guid.NewGuid().ToString()); messageDelegates.Add(message.GetMsgid(), messageDelegate); - - ThreadPoolTimer timeOutTimer = ThreadPoolTimer.CreateTimer(TimeroutCallback, new TimeSpan(0,0,0,0,message.GetTimeout())); + + ThreadPoolTimer timeOutTimer = ThreadPoolTimer.CreateTimer((obj) => + { + notifyResultError(message.GetMsgid(), ResultStatus.EXEC_TIMEOUT, "The response of message is time out.", null); + }, new TimeSpan(0, 0, 0, 0, 2/*message.GetTimeout()*/)); timerOutDictionary.Add(message.GetMsgid(), timeOutTimer); } @@ -239,13 +240,6 @@ public void Send(HMessage message, Action messageDelegate) transportManager.SendObject(message); } - private void TimeroutCallback(object stateInfo) - { - HMessage message = (HMessage)stateInfo; - notifyResultError(message.GetMsgid(), ResultStatus.EXEC_TIMEOUT, "The response of message is time out.", null); - messageDelegates.Remove(message.GetMsgid()); - } - /// /// The client MUST be connected to access to this service. /// Demands the server a subscription to a channel. diff --git a/hubiquitus4w8/hapi/hStructures/HOptions.cs b/hubiquitus4w8/hapi/hStructures/HOptions.cs index 286728a..5b73185 100644 --- a/hubiquitus4w8/hapi/hStructures/HOptions.cs +++ b/hubiquitus4w8/hapi/hStructures/HOptions.cs @@ -180,6 +180,7 @@ public void SetMsgTimeout(int timeout) else this["msgTimeout"] = 30000; //30000s by default } + catch (Exception e) { Debug.WriteLine("{0} : Can not update the msgTimerout attribute", e.ToString()); diff --git a/hubiquitus4w8/hapi/transport/socketio/HTransportSocketIO.cs b/hubiquitus4w8/hapi/transport/socketio/HTransportSocketIO.cs index 2aed93f..86cf7cb 100644 --- a/hubiquitus4w8/hapi/transport/socketio/HTransportSocketIO.cs +++ b/hubiquitus4w8/hapi/transport/socketio/HTransportSocketIO.cs @@ -206,7 +206,7 @@ void socketIO_Error(object sender, ErrorEventArgs e) string errorMsg = null; if (e != null) { - errorMsg = e.Message; + errorMsg = e.ErrorStatus.ToString(); } if (connTimeoutTimer != null) { diff --git a/hubiquitus4w8/hubiquitus4w8.csproj b/hubiquitus4w8/hubiquitus4w8.csproj index af2d85b..74d015f 100644 --- a/hubiquitus4w8/hubiquitus4w8.csproj +++ b/hubiquitus4w8/hubiquitus4w8.csproj @@ -133,14 +133,15 @@ False - ..\..\..\..\..\MyGit\socketio_w8\SocketIO4Net\packages\Newtonsoft.Json.4.5.10\lib\winrt45\Newtonsoft.Json.dll + ..\..\..\libs\Newtonsoft.Json.dll + + + False + ..\..\..\libs\SocketIO4Net.dll - - {27d619fb-a7c1-4366-9b12-283a702d0778} - SocketIO4Net - + 11.0 diff --git a/libs/SocketIO4Net.dll b/libs/SocketIO4Net.dll deleted file mode 100644 index 746b125f2eb2dec90265b9d2037dbc347a2f34fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40448 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