I think I counted it some where around 30 seconds... you should just test it out...
On Fri, Jun 19, 2009 at 10:47 AM, Marc Rochel<[email protected]> wrote: > Really? How long is the timeout value in that case? > > -----Original Message----- > From: [email protected] [mailto:[email protected]] > On Behalf Of Daniel Aquino > Sent: Freitag, 19. Juni 2009 15:31 > To: Discussion of the ENet library > Subject: Re: [ENet-discuss] ENetPeer structure when reconnecting > > actually you do receive an event disconnect when enet gives up connecting... > > When i receive a disconnect message I have the information I need in > peer->data to relate it back... > > On Fri, Jun 19, 2009 at 5:01 AM, William Brandt<[email protected]> wrote: >> Marc Rochel wrote: >> >> Hi ! >> >> >> >> Something related was bugging me some time as well. When you try to connect, >> after a while, if successful, you get a ENET_EVENT_TYPE_CONNECT, but you >> never get a notification when the connection doesn't get established. Maybe >> enet keeps trying infinitly itself? I "solved" the issue for me by checking >> if some selfdefined timeout is passed and the call enet_host_destroy. >> Creating a new one afterwards and trying to connect again works. >> >> >> >> Best regards >> >> Marc >> >> >> >> >> >> From: [email protected] [mailto:[email protected]] >> On Behalf Of William Brandt >> Sent: Donnerstag, 18. Juni 2009 19:08 >> To: Discussion of the ENet library >> Subject: Re: [ENet-discuss] ENetPeer structure when reconnecting >> >> >> >> Ruud van Gaal wrote: >> >> This all sounds familiar. I have this connection scheme with the following >> >> properties: >> >> - the server may not be online yet >> >> - the client attempts a connection every second or 2, to see if the server >> >> is already alive >> >> - I only want 1 connection (client<->server) >> >> >> >> I have a C++ wrapper (class QNClient) which only tracks 1 peer. This client >> >> class is legacy and only represents 1 link to a server (class QNServer). >> >> For repeated connection attempts, this was no problem in the past (without >> >> ENet); I sent out some kind of CONNECT packet, and if something came back, >> >> it was connected. >> >> With the ENet peer, I start an enet_host_connect() with every connection >> >> attempt. If I create an ENet host with only 1 peer, I run out of peers after >> >> this first connect attempt. >> >> It's a bit awkward, since if I allow more peers in the ENet host, multiple >> >> peers may connect succesfully. I'll have to drop the surplus of connections >> >> once the server comes up and it turns out I get multiple >> >> ENET_EVENT_TYPE_CONNECT events. >> >> It seems to work though with 1 peer, I just get a lot of 'out of peer' error >> >> when trying enet_host_connect(). I haven't tried resetting the peer; I don't >> >> think I want to since a connect reply may still be incoming and I'd rather >> >> handle that as usual. >> >> >> >> Ruud >> >> >> >> >> >> >> >> -----Oorspronkelijk bericht----- >> >> Van: [email protected] >> >> [mailto:[email protected]] Namens Daniel Aquino >> >> Verzonden: Thursday, June 18, 2009 18:13 >> >> Aan: Discussion of the ENet library >> >> Onderwerp: Re: [ENet-discuss] ENetPeer structure when reconnecting >> >> >> >> Perhaps as I said you ran out of peers... So until the >> >> callback stack was finished that peer wouldn't be free yet... >> >> >> >> On Wed, Jun 17, 2009 at 11:23 PM, William >> >> Brandt<[email protected]> wrote: >> >> >> >> Daniel Aquino wrote: >> >> >> >> >From what i know there is no deleting. I believe enet >> >> >> >> will clean up >> >> >> >> the peer after it has told you about the event and you have had a >> >> chance to react. And the connection function will return a >> >> >> >> new peer >> >> >> >> with no way to re-use the existing peer that I know of... >> >> >> >> Which does >> >> >> >> confuse me a bit in the case of attempting to make a new connection >> >> inside of the disconnection event when there is no more >> >> >> >> peers left... >> >> >> >> I don't know if in that case it would still consider that peer as >> >> valid resulting in the inability to form a new connection or if it >> >> would end up using that same peer destroying data inside of it that >> >> you may still need... So I copied any data I needed from the peer >> >> object before making the new connection just in case... I guess >> >> these questions could be solved easily by looking into the >> >> >> >> enet code >> >> >> >> or setting the peer count to 1 and doing some testing... >> >> >> >> On Wed, Jun 17, 2009 at 2:47 PM, William >> >> >> >> Brandt<[email protected]> wrote: >> >> >> >> >> >> When a user is disconnected from the server and is >> >> >> >> reconnecting, do I >> >> >> >> need to get a new ENetPeer object (from the enet_host_connect() >> >> function), or is it possible to use the same one to >> >> >> >> reconnect? Also, >> >> >> >> if I have to get a new one, do I need to delete the old one (& how)? >> >> >> >> ... >> >> >> >> well what I'm doing now seems to be working... >> >> the main problem I was having was that enet_host_connect() was >> >> returning NULL when I tried to reconnect. It seems I had to >> >> explicitly call >> >> enet_peer_reset() on the old peer object before I reconnect >> >> >> >> and get a >> >> >> >> new peer object. >> >> >> >> >> >> _______________________________________________ >> >> ENet-discuss mailing list >> >> [email protected] >> >> http://lists.cubik.org/mailman/listinfo/enet-discuss >> >> >> >> >> >> You should add a 5000ms delay when you call enet_host_service() to check for >> connect events after calling enet_host_connect(). Then if you don't get a >> response you can safely assume that the server isn't going to respond and >> reset the peer then try again. >> >> ________________________________ >> _______________________________________________ >> ENet-discuss mailing list >> [email protected] >> http://lists.cubik.org/mailman/listinfo/enet-discuss >> >> >> you can do that in one line. It's safe to assume that you won't get any >> events other than a connection confirmation if you're not connected... so >> you can use the enet_host_service() built-in timeout feature. This is what >> I use (in a connect() function that returns true when connection succeeded >> or false when it failed): >> >> peer_ = enet_host_connect (client_, &address, 2); >> if (peer_ == NULL) throw "ERROR: Unable to initiate Enet peer connection."; >> if (enet_host_service (client_, &event, 5000) > 0 && event.type == >> ENET_EVENT_TYPE_CONNECT) return true; >> else{ >> enet_peer_reset (peer_); >> return false; >> } >> >> _______________________________________________ >> ENet-discuss mailing list >> [email protected] >> http://lists.cubik.org/mailman/listinfo/enet-discuss >> >> > _______________________________________________ > ENet-discuss mailing list > [email protected] > http://lists.cubik.org/mailman/listinfo/enet-discuss > _______________________________________________ > ENet-discuss mailing list > [email protected] > http://lists.cubik.org/mailman/listinfo/enet-discuss > _______________________________________________ ENet-discuss mailing list [email protected] http://lists.cubik.org/mailman/listinfo/enet-discuss
