<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ruud van Gaal wrote:
<blockquote cite="mid:376B8C97183E48C8939A482AD1A4D8D5@rvglaptop3"
 type="cite">
  <pre wrap="">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&lt;-&gt;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


  </pre>
  <blockquote type="cite">
    <pre wrap="">-----Oorspronkelijk bericht-----
Van: <a class="moz-txt-link-abbreviated" href="mailto:enet-discuss-bounces@cubik.org">enet-discuss-bounces@cubik.org</a> 
[<a class="moz-txt-link-freetext" href="mailto:enet-discuss-bounces@cubik.org">mailto:enet-discuss-bounces@cubik.org</a>] 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<a class="moz-txt-link-rfc2396E" href="mailto:taekvideo@gmail.com">&lt;taekvideo@gmail.com&gt;</a> wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">Daniel Aquino wrote:

&gt;From what i know there is no deleting.  I believe enet 
      </pre>
    </blockquote>
    <pre wrap="">will clean up
    </pre>
    <blockquote type="cite">
      <pre wrap="">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 
      </pre>
    </blockquote>
    <pre wrap="">new peer 
    </pre>
    <blockquote type="cite">
      <pre wrap="">with no way to re-use the existing peer that I know of...  
      </pre>
    </blockquote>
    <pre wrap="">Which does 
    </pre>
    <blockquote type="cite">
      <pre wrap="">confuse me a bit in the case of attempting to make a new connection 
inside of the disconnection event when there is no more 
      </pre>
    </blockquote>
    <pre wrap="">peers left...
    </pre>
    <blockquote type="cite">
      <pre wrap="">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 
      </pre>
    </blockquote>
    <pre wrap="">enet code 
    </pre>
    <blockquote type="cite">
      <pre wrap="">or setting the peer count to 1 and doing some testing...

On Wed, Jun 17, 2009 at 2:47 PM, William 
      </pre>
    </blockquote>
    <pre wrap="">Brandt<a class="moz-txt-link-rfc2396E" href="mailto:taekvideo@gmail.com">&lt;taekvideo@gmail.com&gt;</a> wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">
When a user is disconnected from the server and is 
      </pre>
    </blockquote>
    <pre wrap="">reconnecting, do I 
    </pre>
    <blockquote type="cite">
      <pre wrap="">need to get a new ENetPeer object (from the enet_host_connect() 
function), or is it possible to use the same one to 
      </pre>
    </blockquote>
    <pre wrap="">reconnect? &nbsp;Also, 
    </pre>
    <blockquote type="cite">
      <pre wrap="">if I have to get a new one, do I need to delete the old one (&amp; how)?
      </pre>
    </blockquote>
  </blockquote>
  <pre wrap=""><!---->...
  </pre>
  <blockquote type="cite">
    <blockquote type="cite">
      <pre wrap="">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.&nbsp; It seems I had to 
explicitly call
enet_peer_reset() on the old peer object before I reconnect 
      </pre>
    </blockquote>
    <pre wrap="">and get a 
    </pre>
    <blockquote type="cite">
      <pre wrap="">new peer object.
      </pre>
    </blockquote>
  </blockquote>
  <pre wrap=""><!---->
_______________________________________________
ENet-discuss mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ENet-discuss@cubik.org">ENet-discuss@cubik.org</a>
<a class="moz-txt-link-freetext" href="http://lists.cubik.org/mailman/listinfo/enet-discuss">http://lists.cubik.org/mailman/listinfo/enet-discuss</a>

  </pre>
</blockquote>
You should add a 5000ms delay when you call enet_host_service() to
check for connect events after calling enet_host_connect().&nbsp; 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.<br>
</body>
</html>