From 3abccf9bf9a92c8861dbbc042726ac92fb8c52f2 Mon Sep 17 00:00:00 2001 From: Sean Date: Mon, 8 Apr 2024 21:36:00 -0400 Subject: [PATCH] Fix connection issues. --- .vs/Navigator/DesignTimeBuild/.dtbcache.v2 | Bin 73385 -> 73385 bytes .vs/Navigator/v16/.suo | Bin 223232 -> 123392 bytes .../Service/MarketDataServiceClient.cs | 5 ++ Navigator/App.xaml.cs | 47 +++++++++--------- Navigator/AppSettings.json | 12 +++-- Navigator/Utility/IPCache.cs | 5 ++ Navigator/Utility/Utility.cs | 1 + Navigator/ViewModels/AboutViewModel.cs | 46 +++++++++-------- Navigator/Views/AboutPage.xaml | 2 +- 9 files changed, 67 insertions(+), 51 deletions(-) diff --git a/.vs/Navigator/DesignTimeBuild/.dtbcache.v2 b/.vs/Navigator/DesignTimeBuild/.dtbcache.v2 index 355f06f4a10ff5a4b155ab28d813244cbefbb9d8..e85fa977f6530cf6abc08e997a6db91c0dae8ea0 100644 GIT binary patch delta 5598 zcmcJS4Rnmz8OP_ok_dueS(Zcu5nnNrnaRwAWj0@ns_LFy$5FNB6Op2!d(^QeRclop zORgHLYSpTu308cq#j2_(h~KRcqlY;izF^qr42G;OyVGHJhy9*F!0xcQLe_vaZtv{Lkw;=L}CwzZMV z!wK^IwsAFcr(F|L&6z0YH|t)LKmD1(GH1I@{&35fnwPgvO%%h;3At5Pk#~P8?Mjua ztDY{fJFFg;FX#{1>`trSl@|`=<=I?8mn-0Ndjg@b&1VhzZ6Tj05DwadR`l8ZPOIJK zvWERZm)&O>DZeWQOYgLl#9&#Od6g;CMSe;veI7+qXU#10eP7NHbL7c)OPcl0$&vkc z_YxDOs`{E7Tl$p9Hg|;SGIQEE>Hp5R#6US{d;0waC(23N`|7J2$JVPt`m6E^y|!S` z5%75M`h0$y#~%*+tZu(G*B|ycfkAZ+tE-9DGi zQi45ql9%`PlyB{AQxn=7Hr{TxzpZ@Zc)I-N@u4-<$CHF?cib!7*k&)8zq_OKo}8T1 z(o*+H1r{0>%WKdg=yhl@^do2q^kZnLA>TQf9_fOiD{=V~XcZKNRzrH)o6s8Qr_fsH zXV5z6EoeRTb7%wfHnb6X1NsHD3Hl|p8QKDEh1$lR^DD%9?J5ZCM$AR3aj^~B4()&* zp7;)~cR~US)PT*vU7&v0Zb*OEJ)rK}3+;pS1Kx%7#`i;dqwhfnAU*FOq@S_Xh*&I# z5VXJ|dS|g+J+i6#4Pl7oeKd!mG{pMkehulVLdHiuB{Y}}RviVaPC`8$>*-wAqq^Ys zGf-Edy2ZNE9_mU*S9hT@VqHBR>dHh{Poa95kB#&O-c(tlNc9ma8|W)kKcK%*1Au`- zMly{8Mlp>BMl+28#xT7AyukD#@FLS# zU@X%(U>wtUU_8?VU;@)bU?S5bU=oub@G}L0AX69!Gfe@eFhxqiQl>JXjA=SBooOa8 zlc^jiXPOPnW_ks9g=r2jhiNV_muVg_k7+(IpQ!? zjZB+>O-!4C%}iT?txQ!w71K6g8`BP82h+}Cy#Jj{yKuRSX%Dc6X&Twm z=@4*;=`e7Z=?HLy=_qiN=@@W~=>y;crW3#krVoJ+nN9(xm`($yna%)bn9c%cna&sE z{hw#LfXfR^7lDgRmw-!5mx0Sn9|0dReGGiebQQSD^a=0@(>354({PKwdizOPDzS3M66heimm z99G+|=G>KOMuGY}?p%ld0o{N;g>FKhK?Eu27R1nP=%3IX=wHxX=yN&sUQSU(#cyK< zThiHLAY?!Elp|n*OJDr>0W! zh}fZ}7?{vH`f{r15~=s<%0|4p5kszX-T&QmBmdoXU!~+?)yAM?STBB3joNSA?u)-y zD;Bjjk^RQ)zLBQ2-%@;+(s{~6IjFXWJa;A4Xm9MD-c?)_ z^5EaHJ9RL;>Q6Aqv(P!{JoINF&)h5chJmhLP=evDs5llg&uaX4@xVNL-#5=J(>(ha zD$7vWx`lc6)#lmHQ2k+^S=u}Yr$z=C1x%f=%~q%*4W{md<8ac77pOArxng91J7 z4Dn?+m{OTxHH6)B?!F# zFBj->XNWH)hyezwahM*g3<3NMW`zKb^_coRQum+#g981r^?8E~(V!r=8@hUrSxu}y zSAEQ6k!Q9pvvoI2AL4R-{z&p5Cp?rxQu6b0V=y!XI)(i42k12PN9bAH8wx#|W4vmZ z5nYfb%3J>%<0fFtw;>TN?ku`TGtz}u7||`AMW5*6bkRA{OhVCDyNQ!XTN!x;7+MGw zK@FEK#=R2g0+#&?bP@V1bV)?lrHS#;qRygQYYPShp%9c5?U61DqdRb4G>`ruUG$6+ T;=~p@@kRTm3(sEkeV+IqAc_NS delta 4786 zcmc(hdvFuS9mj7E493RzRRgl)U>wI78zfnh&yrvGg#wJB<}pASLOJVBMj%TbN#->a zd1!`aGL&MiiwUKa5K8JkVq-TrNlOdq11K$_ubKSYq0>o|w%O~32B!4!U0HU(Qy9{C z293V^`R#jeZ-2kr{tHw4FH9xB?;)#}*t{;A-RrE-b(g17R~#Oz-CFK)m22hBa>ZNW z@V41)m8#-YypD3K=2E>Cn&#Cj(affJ?AD&cdGzgpmZYhXP?t`x4;0b5!79^~rmD?S zYO@+qn|c1P1v@&r0=~!|>Xd8An)}O!&&y{# zJ^yK)m9|n1?a(7)xE5a8)2+5XbmL z?E?$y9lFC+Zu6+lN{`cOb$Q$L3boCtIaQa_>r!oYn^nOkI_*xc)2X>CbZdpn)26nm zil@S3RVtL8e;4;$FQcC&*`yYa({tTK-z2qkPJ02ZYhM=I79piHv%icwc5F#=SogAdxI~a z1$TuPt=B_gUocQxX|_sVl4}|?JR|a|zcm!xu6rUtryh#<^l)8TN%!Ev3ftuxFJ_G=0F7Dor>w`D~n^2C3fWvU_c6h27q!Rw^FFtJyW1-BGSPJWh{Cu~{oU4#lP_s?+9m zSQS+-S5!rVlQ|WqR%us;)z=1PdUw$Ma^~ylG<>C=S}xbo%*#&>cU+!EqH~w2;kCX% zyI-I14yDTRG~P2~LPc0gOJ5#d zM5Pf_z7D+sy$Ma6I6X1(4^Ss2 z_#q@F5ra3 z2{%l{$W7Gbjn)`Xpg13Tk{I*i0~8>A(U?z`8imAoDhd`6<7uFn7z=aMl8}aJC9q#aS!R%GnxV4QK0s zb)2mS)^oNI*vQ!?U=wGXfz6z40k&|q71+vI8_>p?256jl0WW9UfNh*@ck?LQ&Y2%s zKW70Tz*#5I$yo>paTWn0ob3d5a<&`T&DmaHFK7FJeVpwF_H)(^baQq9IKbI+z;m1( z1P*fcJn%ecF90uab_h7c*vZCG0u8{Ue1mJM>#tN9OLXbaGbLfzzNPy z0w*~;1)SpSG;o@;Gr$?n&H`sS8!?%PN=zxl&5aZsznQ|A31gNpW|2OcOBRz@-=$nq zxUdFCrArUcZEwO`==wdlX-c7UI3Wz|NKTyIQ+rbEfl3@8Okg=Ru&&@3n&%78MV zEGS#13+^^X|3vDIB4pnMpO%HA7t1T)=nG_{L^c-6_+lYfEXTdwD3y&e*;s@RB}&p+ z2Fqkw-QB-SgpPCfg^tDY?X1zzVU|Vcu*im4HmoAWVC6DGhfSVt*fE${M(n80h&tp( z&SqmbQirbhvzVysyjfj!;~rf4<_7|K|)bOL+48BEb^6fiOn6k{wI z*N4=2MWu|zI%(N0Q*`V~;SxoUaHV)y#Cyn<;z408invxKkKR$L<3;+ z<~n3tK;V$@HW+X@_!A7JFP2MIS5Ay`vWS9-6Fe67EV2lDOX6vLJZkg1_CAJQQ&^iE diff --git a/.vs/Navigator/v16/.suo b/.vs/Navigator/v16/.suo index 43bd7710e16e00945085cc8f8c0278e172b95d2a..ff00208f5fa267c69da329444e28ae0577c74c29 100644 GIT binary patch delta 15864 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 L93M9OMxXFcs#DOQ literal 223232 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 + /// SetUrl + /// + /// The fully qualified url http://100.0.0.0:8000. + /// The user. public void SetUrl(String url,String user) { lock(this) diff --git a/Navigator/App.xaml.cs b/Navigator/App.xaml.cs index 9feaea9..2105332 100644 --- a/Navigator/App.xaml.cs +++ b/Navigator/App.xaml.cs @@ -1,6 +1,5 @@ using System; using Xamarin.Forms; -using Xamarin.Forms.Xaml; using Navigator.Services; using Navigator.Views; using MarketData.Service; @@ -15,31 +14,33 @@ namespace Navigator { InitializeComponent(); DependencyService.Register(); - if(!DesignMode.IsDesignModeEnabled) - { - if(MarketDataServiceClient.IsWiFiNetwork() && MarketDataServiceClient.GetInstance().Ping(AppSettingsManager.Settings["Service_Local"])) - { - MarketDataServiceClient.GetInstance().SetUrl(AppSettingsManager.Settings["Service_Local"],AppSettingsManager.Settings["ServiceUser"]); - } - else - { - String ipAddress=IPCache.GetIPAddress(); + InitializeConnection(); - if(null!=ipAddress) - { - ipAddress= AppSettingsManager.Settings["Service_Prefix"]+ipAddress+ AppSettingsManager.Settings["Service_Postfix"]; - if(MarketDataServiceClient.GetInstance().Ping(ipAddress)) - { - MarketDataServiceClient.GetInstance().SetUrl(ipAddress, AppSettingsManager.Settings["ServiceUser"]); - } - } - else if(MarketDataServiceClient.GetInstance().Ping(AppSettingsManager.Settings["Service_Network"])) - { - MarketDataServiceClient.GetInstance().SetUrl(AppSettingsManager.Settings["Service_Network"], AppSettingsManager.Settings["ServiceUser"]); - } + MainPage = new MainPage(); + } + + private void InitializeConnection() + { + String ipAddress=IPCache.GetIPAddress(); + if (null != ipAddress && MarketDataServiceClient.GetInstance().Ping(ToUrl(ipAddress))) + { + MarketDataServiceClient.GetInstance().SetUrl(ToUrl(ipAddress), AppSettingsManager.Settings["ServiceUser"]); + } + else if (MarketDataServiceClient.IsWiFiNetwork() && MarketDataServiceClient.GetInstance().Ping(ToUrl(AppSettingsManager.Settings["Service_Local"]))) + { + IPCache.SaveIPAddress(AppSettingsManager.Settings["Service_Local"]); + MarketDataServiceClient.GetInstance().SetUrl(ToUrl(AppSettingsManager.Settings["Service_Local"]), AppSettingsManager.Settings["ServiceUser"]); + } + else if (MarketDataServiceClient.GetInstance().Ping(ToUrl(AppSettingsManager.Settings["Service_Network"]))) + { + IPCache.SaveIPAddress(AppSettingsManager.Settings["Service_Network"]); + MarketDataServiceClient.GetInstance().SetUrl(ToUrl(AppSettingsManager.Settings["Service_Network"]), AppSettingsManager.Settings["ServiceUser"]); } } - MainPage = new MainPage(); + + private String ToUrl(String ipAddress) + { + return AppSettingsManager.Settings["Service_Prefix"] + ipAddress + AppSettingsManager.Settings["Service_Postfix"]; } protected override void OnStart() diff --git a/Navigator/AppSettings.json b/Navigator/AppSettings.json index 05062ef..df964cc 100644 --- a/Navigator/AppSettings.json +++ b/Navigator/AppSettings.json @@ -1,7 +1,9 @@ { - "Service_Local": "http://10.0.0.73:8000", - "Service_Network" : "http://73.56.77.171:8000", - "Service_Postfix" : ":8000", - "Service_Prefix" : "http://", - "ServiceUser" : "sean" + "Service_Local_Obsolete": "http://10.0.0.240:8000", + "Service_Network_Obsolete": "http://diversified-software.com:8000", + "Service_Local": "10.0.0.240", + "Service_Network": "diversified-software.com", + "Service_Postfix": ":8000", + "Service_Prefix": "http://", + "ServiceUser": "sean" } \ No newline at end of file diff --git a/Navigator/Utility/IPCache.cs b/Navigator/Utility/IPCache.cs index 54b6043..6116a36 100644 --- a/Navigator/Utility/IPCache.cs +++ b/Navigator/Utility/IPCache.cs @@ -20,6 +20,11 @@ namespace Navigator.Utils private IPCache() { } + + /// + /// SaveIPAddress + /// + /// The ipaddress. Example 10.0.0.201 diversfified-software.com public static void SaveIPAddress(String ipAddress) { StreamWriter streamWriter=File.AppendText(pathFileName); diff --git a/Navigator/Utility/Utility.cs b/Navigator/Utility/Utility.cs index 78fba69..e50f052 100644 --- a/Navigator/Utility/Utility.cs +++ b/Navigator/Utility/Utility.cs @@ -16,6 +16,7 @@ namespace Navigator.Utils { private static DateTime epoch = DateTime.Parse("01-01-0001"); private static TimeSpan oneDay=new TimeSpan(1,0,0,0); + public static String Pad(string str, char filler, int length) { int stringLength = str.Length; diff --git a/Navigator/ViewModels/AboutViewModel.cs b/Navigator/ViewModels/AboutViewModel.cs index 05d6c05..c64da4a 100644 --- a/Navigator/ViewModels/AboutViewModel.cs +++ b/Navigator/ViewModels/AboutViewModel.cs @@ -1,19 +1,9 @@ using System; using System.Windows.Input; -using Xamarin.Essentials; -using Xamarin.Forms; -using Navigator.Integration; -using System.Net.Http; -using System.Collections.Generic; -using MarketData.MarketDataModel; using MarketData.Service; -using Newtonsoft.Json; -using System.Text; -using System.Net.Http.Headers; using Navigator.Core; using System.ComponentModel; using Navigator.Utils; -using System.IO; namespace Navigator.ViewModels { @@ -63,10 +53,11 @@ namespace Navigator.ViewModels return onResetCommand; } } + public void HandleIPAddress() { if(String.IsNullOrEmpty(ipAddress))return; - String url=AppSettingsManager.Settings["Service_Prefix"]+ipAddress+AppSettingsManager.Settings["Service_Postfix"]; + String url=ToUrl(ipAddress); Status="ping "+url+" ..."; if(MarketDataServiceClient.GetInstance().Ping(url)) { @@ -77,43 +68,54 @@ namespace Navigator.ViewModels else Status="ping failed"; Message=MarketDataServiceClient.GetInstance().GetBaseUri(); } + public void HandleReset() { Status=""; - Status="ping "+AppSettingsManager.Settings["Service_Local"]+" ..."; + Status="ping "+ToUrl(AppSettingsManager.Settings["Service_Local"])+" ..."; IPAddress=""; - if(MarketDataServiceClient.IsWiFiNetwork() && MarketDataServiceClient.GetInstance().Ping(AppSettingsManager.Settings["Service_Local"])) + if(MarketDataServiceClient.IsWiFiNetwork() && MarketDataServiceClient.GetInstance().Ping(ToUrl(AppSettingsManager.Settings["Service_Local"]))) { - MarketDataServiceClient.GetInstance().SetUrl(AppSettingsManager.Settings["Service_Local"],AppSettingsManager.Settings["ServiceUser"]); - Message=AppSettingsManager.Settings["Service_Local"]; - Status="ping succeeded"; + MarketDataServiceClient.GetInstance().SetUrl(ToUrl(AppSettingsManager.Settings["Service_Local"]),AppSettingsManager.Settings["ServiceUser"]); + Message=ToUrl(AppSettingsManager.Settings["Service_Local"]); + IPCache.SaveIPAddress(AppSettingsManager.Settings["Service_Local"]); + Status="ping succeeded, connection reset to "+ToUrl(AppSettingsManager.Settings["Service_Local"]); return; } - else status="ping failed."; - Status="ping "+AppSettingsManager.Settings["Service_Network"]+" ..."; - if(MarketDataServiceClient.GetInstance().Ping(AppSettingsManager.Settings["Service_Network"])) + Status="ping "+ToUrl(AppSettingsManager.Settings["Service_Network"])+" ..."; + if(MarketDataServiceClient.GetInstance().Ping(ToUrl(AppSettingsManager.Settings["Service_Network"]))) { - MarketDataServiceClient.GetInstance().SetUrl(AppSettingsManager.Settings["Service_Network"],AppSettingsManager.Settings["ServiceUser"]); - Message=AppSettingsManager.Settings["Service_Network"]; - Status="ping succeeded"; + MarketDataServiceClient.GetInstance().SetUrl(ToUrl(AppSettingsManager.Settings["Service_Network"]),AppSettingsManager.Settings["ServiceUser"]); + Message=ToUrl(AppSettingsManager.Settings["Service_Network"]); + IPCache.SaveIPAddress(AppSettingsManager.Settings["Service_Network"]); + Status="ping succeeded, connection reset to "+ToUrl(AppSettingsManager.Settings["Service_Network"]); } else Status="ping failed"; } + public String Message { get { return message; } set { SetProperty(ref message, value); } } + public String Status { get{return status;} set{SetProperty(ref status,value);} } + public String IPAddress { get{return ipAddress;} set{SetProperty(ref ipAddress,value);} } + + private String ToUrl(String ipAddress) + { + return AppSettingsManager.Settings["Service_Prefix"] + ipAddress + AppSettingsManager.Settings["Service_Postfix"]; + } + } } \ No newline at end of file diff --git a/Navigator/Views/AboutPage.xaml b/Navigator/Views/AboutPage.xaml index 997217f..de5516e 100644 --- a/Navigator/Views/AboutPage.xaml +++ b/Navigator/Views/AboutPage.xaml @@ -66,7 +66,7 @@ -