The Cheaterman
2018-03-16 11:37:02 UTC
Hi everyone, I hope you're doing goodie!
First, thanks a lot Kenton for all the magic! I want to use it! However,
I'd like to use it from Python if possible hehe, but as you may know
pycapnp is somewhat unmaintained (one thing I'd like to see it have is
support for more than one client when wrapping a socket FD, or support for
UDP connection strings somehow, maybe with udp: or something), and that's
why I'm here instead - I'm probably misunderstanding how to use Capnp RPC
more than anything else.
So, let's get to the point: I'm trying to learn how to use Capnp RPC in
Python, so I made what seemed to me like one of the simplest things to do -
a chat program. I managed to make it work with extremely poor network
architecture where the client polls the server (several times per second)
for new messages to be received. The code is here:
https://github.com/Cheaterman/capnchat/ - the master branch still uses the
"polling" protocol, while the "push_messages" branch attempts to push the
messages directly to the client.
The issue happens here:
https://github.com/Cheaterman/capnchat/blob/push_messages/server.py#L69
(you probably already guessed I was trying something like that from the
title), which attempts to wait on this promise
<https://github.com/Cheaterman/capnchat/blob/push_messages/server.py#L119>,
which corresponds to this part
<https://github.com/Cheaterman/capnchat/blob/push_messages/chatroom.capnp#L23>
of the proto (implemented here in the client
<https://github.com/Cheaterman/capnchat/blob/push_messages/client.py#L70> -
BTW I have no idea if having this ".Server" class on the client is a good
idea).
As you already mentioned in other threads, the reason this doesn't work is
because I can't make the main event loop wait for things (AIUI) because
nothing would be processed in the meantime ; and callbacks are executed in
the event loop. The problem is, if I don't wait() on that promise, it's
never actually executed, so I don't quite know what I should be doing
here... You also mentioned in other threads that I might want to add my
promise to the TaskSet or something? I don't think this is exposed in
Python, but I imagine wrapping it wouldn't be an issue (even with my
limited knowledge of modern C++ and how to use it from Cython).
In any case, thanks in advance for clearing out any misunderstanding I may
have as to how I am supposed to implement that kind of things. If things go
well, I'd like to use Capnp RPC to implement a multiplayer games protocol,
please tell me if that makes sense at all or if I should stop right there
:-P
Thanks for reading!
First, thanks a lot Kenton for all the magic! I want to use it! However,
I'd like to use it from Python if possible hehe, but as you may know
pycapnp is somewhat unmaintained (one thing I'd like to see it have is
support for more than one client when wrapping a socket FD, or support for
UDP connection strings somehow, maybe with udp: or something), and that's
why I'm here instead - I'm probably misunderstanding how to use Capnp RPC
more than anything else.
So, let's get to the point: I'm trying to learn how to use Capnp RPC in
Python, so I made what seemed to me like one of the simplest things to do -
a chat program. I managed to make it work with extremely poor network
architecture where the client polls the server (several times per second)
for new messages to be received. The code is here:
https://github.com/Cheaterman/capnchat/ - the master branch still uses the
"polling" protocol, while the "push_messages" branch attempts to push the
messages directly to the client.
The issue happens here:
https://github.com/Cheaterman/capnchat/blob/push_messages/server.py#L69
(you probably already guessed I was trying something like that from the
title), which attempts to wait on this promise
<https://github.com/Cheaterman/capnchat/blob/push_messages/server.py#L119>,
which corresponds to this part
<https://github.com/Cheaterman/capnchat/blob/push_messages/chatroom.capnp#L23>
of the proto (implemented here in the client
<https://github.com/Cheaterman/capnchat/blob/push_messages/client.py#L70> -
BTW I have no idea if having this ".Server" class on the client is a good
idea).
As you already mentioned in other threads, the reason this doesn't work is
because I can't make the main event loop wait for things (AIUI) because
nothing would be processed in the meantime ; and callbacks are executed in
the event loop. The problem is, if I don't wait() on that promise, it's
never actually executed, so I don't quite know what I should be doing
here... You also mentioned in other threads that I might want to add my
promise to the TaskSet or something? I don't think this is exposed in
Python, but I imagine wrapping it wouldn't be an issue (even with my
limited knowledge of modern C++ and how to use it from Cython).
In any case, thanks in advance for clearing out any misunderstanding I may
have as to how I am supposed to implement that kind of things. If things go
well, I'd like to use Capnp RPC to implement a multiplayer games protocol,
please tell me if that makes sense at all or if I should stop right there
:-P
Thanks for reading!
--
You received this message because you are subscribed to the Google Groups "Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email to capnproto+***@googlegroups.com.
Visit this group at https://groups.google.com/group/capnproto.
You received this message because you are subscribed to the Google Groups "Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email to capnproto+***@googlegroups.com.
Visit this group at https://groups.google.com/group/capnproto.