[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Easy networking module - feedback needed



> connection.register('echo', ('user', 'msg'))

> You would also probably want a separate 'protocol' object on which you
> would register the messages, so
> that you can reuse it for several connections.

pygame_network.register method is in fact
pygame_network.packets.PacketManager.register, which stores all
registered packet types and maps them to integers to reduce packet
size (those integers must be unique), but if you see use for separate
managers all I need to do is define __init__ for it, to override class
variables with instance variables.

> connection = pygame_network.connect('localhost', 10000)

I plan to create Connection class so pygame_network.connect will just
init global connection variable to use by Receiver and SyncObject (it
can be overridden with initialization parameter) and you can create
more connections with this class.
example:
connection = pygame_network.Connection('localhost', 10000)

I chose pyenet as a low level socket library, so protocol (UDP,
Reliable UDP and other variants) can be selected with enet flags
during creation of packet or sending it. This is my answer for need of
both TCP and UDP protocols.

> The network events then would have a connection property telling you
> from which connection they came.

I agree with idea of adding connection to network event. So summing
up, it will look like this:
e.type = NETWORK # event type
e.connection # weakref of connection from which the packet comes
e.channel # channel of connection
e.packet # packet object
e.packet_id # packet identifier
e.net # packet type (to allow e.net == echo)

2012/6/21 Radomir Dopieralski <pygame@xxxxxxxxxxxx>
>
> On Wed, Jun 20, 2012 at 8:02 PM, Szymon Wróblewski <bluex0@xxxxxxxxx> wrote:
> > I focused currently on creating client api and not everything is complete
> > yet, but client side could look like this:
> > (same code with syntax highlighting: http://pastebin.com/CiypsKpC)
> >
> > import pygame
> > import pygame_network
> >
> > pygame.init()
> > # create connection
> > pygame_network.connect('localhost', 10000)
> > # connection overlay
> > host = pygame_network.client.Host()
> > # register new packet type
> > # it will call pygame_network.packets.PacketManager.register()
> > echo = pygame_network.register('echo', ('user', 'msg'))
> > name = raw_input('name: ')
>
> I really hate to see the globals here. Wouldn't it be better to have
> it something like this?
>
> connection = pygame_network.connect('localhost', 10000)
> connection.register('echo', ('user', 'msg'))
>
> then you can connect to different servers with different protocols at
> the same time.
> The network events then would have a connection property telling you
> from which connection they came.
> You can also then close one of the connections independently from others.
> You would also probably want a separate 'protocol' object on which you
> would register the messages, so
> that you can reuse it for several connections.
>
> What do you think?
>
>
> --
> Radomir Dopieralski