Before I get to my problem. I want to thank Sven for the huge effort that had to be made to provide all of the Zinc networking tools. Thank you. I am using ZnClient in an app. It is working fine. But I do not want any UI Notifications. This will eventually be headless on a server. But right now in development when the internet goes out I get a pop up from NameLookupFailure which offers me the options of "Give Up" or "Retry". I need to suppress this popup. I already have Error handling code which will catch NameLookupFailure among many other network based errors. Also, is there a better way to check if the network is up other than simply making a request and either getting a successful response or an Error? Thanks for any help. Jimmie |
Hi Jimmie,
> On 2 Sep 2020, at 20:29, Jimmie Houchin <[hidden email]> wrote: > > > Before I get to my problem. I want to thank Sven for the huge effort that had to be made to provide all of the Zinc networking tools. Thank you. Thanks, you're welcome. > I am using ZnClient in an app. It is working fine. But I do not want any UI Notifications. This will eventually be headless on a server. But right now in development when the internet goes out I get a pop up from NameLookupFailure which offers me the options of "Give Up" or "Retry". > > I need to suppress this popup. I already have Error handling code which will catch NameLookupFailure among many other network based errors. I know this is confusing, but this is not a problem. You can simply catch the NameLookupFailure and this will work as expected. The problem is the custom/overwritten NameLookupFailure>>#defaultAction which is doing UI stuff (although this gets handled differently in a headless image as well). IMHO this should be removed. ZnClientTest>>#testIfFailNonExistingHost is an example that does more or less what you want. > Also, is there a better way to check if the network is up other than simply making a request and either getting a successful response or an Error? This is not such an easy problem to solve. Doing something simple, like accessing a known host, is one way (but never 100% since that host might be down on itself). There is also the problem of timeouts (i.e. very slow networks). One of my experimental projects, https://github.com/svenvc/NeoDNS, does contains something called NeoNetworkState that tests internet connectivity by doing a DNS call. But this probably goes to far. HTH, Sven > Thanks for any help. > > > Jimmie |
On 9/2/20 2:36 PM, Sven Van Caekenberghe wrote: > Hi Jimmie, > >> On 2 Sep 2020, at 20:29, Jimmie Houchin <[hidden email]> wrote: >> >> >> Before I get to my problem. I want to thank Sven for the huge effort that had to be made to provide all of the Zinc networking tools. Thank you. > Thanks, you're welcome. > >> I am using ZnClient in an app. It is working fine. But I do not want any UI Notifications. This will eventually be headless on a server. But right now in development when the internet goes out I get a pop up from NameLookupFailure which offers me the options of "Give Up" or "Retry". >> >> I need to suppress this popup. I already have Error handling code which will catch NameLookupFailure among many other network based errors. > I know this is confusing, but this is not a problem. You can simply catch the NameLookupFailure and this will work as expected. The problem is the custom/overwritten NameLookupFailure>>#defaultAction which is doing UI stuff (although this gets handled differently in a headless image as well). IMHO this should be removed. > > ZnClientTest>>#testIfFailNonExistingHost is an example that does more or less what you want. Yes. In the current stack trace in the debugger it never reaches my Error handling and hits the #defaultAction method. Thanks. That puts me on the path I want to go. I probably need to learn to read the tests for or as documentation for code. I am not currently in that habit. >> Also, is there a better way to check if the network is up other than simply making a request and either getting a successful response or an Error? > This is not such an easy problem to solve. Doing something simple, like accessing a known host, is one way (but never 100% since that host might be down on itself). > > There is also the problem of timeouts (i.e. very slow networks). > > One of my experimental projects, https://github.com/svenvc/NeoDNS, does contains something called NeoNetworkState that tests internet connectivity by doing a DNS call. But this probably goes to far. > > HTH, Helps tremendously. Currently when I get a network error, I have a loop which polls the least resource consuming URL on the server that I need to access. I exit the loop upon a successful response and continue with my app's main loop. I figure that lets me know that networking is back up and the server I need is responding. Covers all my bases. I just wanted to know if I was overlooking something that all you smart people who spend way more time than I do on this stuff had a solution. I couldn't think of an easy generic solution that could be created. Again thanks. > > Sven > >> Thanks for any help. >> >> >> Jimmie > |
In any case,
[ ZnClient new get: 'http://host-does-not-exist-123123.com' ] on: NetworkError do: [ #myFailure ] returns #myFailure and does not invoke the #defaultAction, nor any UI. Like I said, you can just catch the exception you want. > On 2 Sep 2020, at 22:15, Jimmie Houchin <[hidden email]> wrote: > > > On 9/2/20 2:36 PM, Sven Van Caekenberghe wrote: >> Hi Jimmie, >> >>> On 2 Sep 2020, at 20:29, Jimmie Houchin <[hidden email]> wrote: >>> >>> >>> Before I get to my problem. I want to thank Sven for the huge effort that had to be made to provide all of the Zinc networking tools. Thank you. >> Thanks, you're welcome. >> >>> I am using ZnClient in an app. It is working fine. But I do not want any UI Notifications. This will eventually be headless on a server. But right now in development when the internet goes out I get a pop up from NameLookupFailure which offers me the options of "Give Up" or "Retry". >>> >>> I need to suppress this popup. I already have Error handling code which will catch NameLookupFailure among many other network based errors. >> I know this is confusing, but this is not a problem. You can simply catch the NameLookupFailure and this will work as expected. The problem is the custom/overwritten NameLookupFailure>>#defaultAction which is doing UI stuff (although this gets handled differently in a headless image as well). IMHO this should be removed. >> >> ZnClientTest>>#testIfFailNonExistingHost is an example that does more or less what you want. > > > Yes. In the current stack trace in the debugger it never reaches my Error handling and hits the #defaultAction method. > > > Thanks. That puts me on the path I want to go. > > I probably need to learn to read the tests for or as documentation for code. I am not currently in that habit. > > >>> Also, is there a better way to check if the network is up other than simply making a request and either getting a successful response or an Error? >> This is not such an easy problem to solve. Doing something simple, like accessing a known host, is one way (but never 100% since that host might be down on itself). >> >> There is also the problem of timeouts (i.e. very slow networks). >> >> One of my experimental projects, https://github.com/svenvc/NeoDNS, does contains something called NeoNetworkState that tests internet connectivity by doing a DNS call. But this probably goes to far. >> >> HTH, > > Helps tremendously. Currently when I get a network error, I have a loop which polls the least resource consuming URL on the server that I need to access. I exit the loop upon a successful response and continue with my app's main loop. I figure that lets me know that networking is back up and the server I need is responding. Covers all my bases. I just wanted to know if I was overlooking something that all you smart people who spend way more time than I do on this stuff had a solution. I couldn't think of an easy generic solution that could be created. > > Again thanks. > > >> >> Sven >> >>> Thanks for any help. >>> >>> >>> Jimmie |
Free forum by Nabble | Edit this page |