[ENet-discuss] ENet 1.2.2 work-in-progress
Lee Salzman
lsalzman1 at cox.net
Sat May 15 12:33:22 PDT 2010
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 <lsalzman1 at cox.net
> <mailto:lsalzman1 at cox.net>> 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
> <lsalzman1 at cox.net <mailto:lsalzman1 at cox.net>> 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
> <lsalzman1 at cox.net <mailto:lsalzman1 at cox.net>> 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
>
>
>
>
More information about the ENet-discuss
mailing list