They're solely counters for the user, and will never be used by ENet for
any other purpose than to increment them on sends/receives. So if you
want to overwrite them with random values at any time or just totally
ignore them, you can do that, it won't harm ENet. :)
Lee
Nuno Silva wrote:
Do the counters affect ENet in any negative way should they overflow,
or is it okay to not care about that if we're not using the new features?
On Sat, May 15, 2010 at 7:08 AM, Lee Salzman <[email protected]
<mailto:[email protected]>> wrote:
You misunderstood me. :)
I mean a *counter* overflow... as in increment an unsigned int
that's already at max, and rolls back over to 0.
Lee
Andrew Fenn wrote:
The semantics of these is that they are set to 0 on
enet_host_create() but
just increment thereafter. It is the user's responsibility to
reset them to 0 periodically to prevent them for overflowing.
What about people that aren't using these new features, isn't that
going to trip them up?
Perhaps it would be better to just contain data since the last
time
you have called enet_host_service because I wouldn't want
other users
of the lib to suddenly have buffer overflows in their code after
upgrading.
On Sat, May 15, 2010 at 6:53 AM, Lee Salzman
<[email protected] <mailto:[email protected]>> wrote:
Okay, this is what I added, which should hopefully suit
your needs:
typedef struct _ENetHost
{
... usual stuff here ...
enet_uint32 totalSentData; /**<
total data sent, user
should reset to 0 as needed to prevent overflow */
enet_uint32 totalSentPackets; /**<
total UDP packets
sent, user should reset to 0 as needed to prevent overflow */
enet_uint32 totalReceivedData; /**<
total data received,
user should reset to 0 as needed to prevent overflow */
enet_uint32 totalReceivedPackets; /**<
total UDP packets
received, user should reset to 0 as needed to prevent
overflow */
} ENetHost;
The semantics of these is that they are set to 0 on
enet_host_create() but
just increment thereafter. It is the user's responsibility to
reset them to 0 periodically to prevent them for
overflowing. Suggested
usage pattern would be like:
myCounter += host -> totalSentData;
host -> totalSentData = 0;
Also note the total*Packets statistics are in terms of raw
UDP packets, i.e.
the aggregates of various ENet commands, so are a better
indicator of the actual network performance than what you
were using before,
which was only user packets. Each increment represents
a single enet_socket_send or enet_socket_receive call
under the hood. The
total*Data versions reflect the actual size of the buffers
sent
or received via the enet_socket_* calls too.
Lee
Andrew Fenn wrote:
In that case is there a solution or can we see this
possibly being
made easier via the API down the line?
On Fri, May 14, 2010 at 9:52 PM, Lee Salzman
<[email protected] <mailto:[email protected]>> wrote:
Keep in mind that reusing those internal ENet
statistics is not going to
be
very safe at all, except for the roundTripTime
stat. Those *Bandwidth
vars
don't measure totals and are just limits supplied
by the user. And
because
of the whole dispatch queue change I made,
lastServicedPeer no longer
exists. :)
Lee
Andrew Fenn wrote:
That out of the way, are there any not too
difficult things people
would
like to see in 1.2.2?
- I use the cmake build system for our
project. It'd be great if ENET
included a FindENET.cmake script or better yet
just completely change
over from autotools.
I've attached the ENET scripts I use to
statically link it into our
project.
- I'm currently trying to figure out how to
get the following data from
ENET:
- Total data received / sent
- Data received / sent since the last flush
- Total packets received / sent
I'm not so sure those things are features but
I'm sure i'm not the
only one that's confused over how to get that
data. So if you could
correct me on the following..
lHost->lastServicedPeer->roundTripTime - I use
this for ping time
however it always says 5ms even when I kill
the server.
lHost->incomingBandwidth/1000 - Data in KiB
received (always shows the
same number even when killing the server)
lHost->outgoingBandwidth/1000 - Data in KiB
sent (always shows the
same number even when killing the server)
lHost->lastServicedPeer->packetsSent - Get's
the packets sent since
the last flush
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss