On Tue, 2009-09-08 at 17:47 +0200, Johan Euphrosine wrote: > On Tue, 2009-09-08 at 17:30 +0200, Loic Dachary wrote: > > > > > > I don't understand how this patch notifies the caller when a LongPoll > > returns. Could you comment your patch in this respect ? > > It does not, > > As we discussed on IRC we can't use the deferred returned by sendPacket, > and I'm not sure how to use a callback on pokerrestclient, since we > could have multiple pokerrest instance for one avatar. > > I'll be available to discuss more with you on this topic.
Hi, Here is a patch that I believe implement the new pokerrestclient interface (i.e: callback on longpoll). -- Johan Euphrosine <[email protected]>
Index: test-pokeravatar.py.in
===================================================================
--- test-pokeravatar.py.in (revision 6220)
+++ test-pokeravatar.py.in (working copy)
@@ -3982,11 +3982,12 @@
d.addCallback(self.joinTable, 0, 2, 'Table2', '2-4-limit')
def handleLongPoll(x):
avatar = self.service.avatars[0]
+ client = avatar.getOrCreateRestClient(('host', 11111, 'path'), 2)
d = avatar.handlePacketDefer(PacketPokerLongPoll())
self.assertEquals(d, avatar._longpoll_deferred)
self.assertEquals(False, avatar._block_longpoll_deferred)
avatar._longpoll_deferred.addCallback(lambda packets: self.assertEquals(PACKET_PING, packets[0].type))
- avatar.sendPacket(PacketPing())
+ client.longPollCallback([PacketPing()])
return d
d.addCallback(handleLongPoll)
return d
Index: test-pokerrestclient.py.in
===================================================================
--- test-pokerrestclient.py.in (revision 6220)
+++ test-pokerrestclient.py.in (working copy)
@@ -95,26 +95,88 @@
return d
# --------------------------------------------------------------
def test01_longPoll(self):
- client = pokerrestclient.PokerRestClient('127.0.0.1', 19481, '/POKER_REST', verbose=6, timeout=10)
+ def longPollCallback(packets):
+ self.assertEquals(PACKET_PING, packets[0].type)
+ class PokerRestClientTest(pokerrestclient.PokerRestClient):
+ def __init__(client):
+ pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', longPollCallback, verbose=6, timeout=10)
+ def sendPacketData(client, data):
+ self.assertSubstring('LongPoll', data)
+ return '[ { "type": "PacketPing" } ]'
+ client = PokerRestClientTest()
self.assertEquals(True, client.pendingLongPoll)
self.assertEquals(None, client.timer)
return client.queue
# --------------------------------------------------------------
def test02_longPollReturn(self):
- client = pokerrestclient.PokerRestClient('127.0.0.1', 19481, '/POKER_REST', verbose=6, timeout=10)
- message = client.message
- def checkMessageString(string):
- self.assertSubstring('PacketPokerLongPollReturn', string)
- message(string)
- client.message = checkMessageString
- client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}')
+ packets = []
+ class PokerRestClientTest(pokerrestclient.PokerRestClient):
+ def __init__(client):
+ pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10)
+ def sendPacketData(client, data):
+ packets.append(data)
+ return "[]"
+ client = PokerRestClientTest()
+ d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}')
+ d.addCallback(lambda arg: self.assertSubstring('LongPollReturn', packets[1]))
+ d.addCallback(lambda arg: self.assertNotEquals(None, client.timer))
return client.queue
# --------------------------------------------------------------
- def test03_longPollBis(self):
- client = pokerrestclient.PokerRestClient('127.0.0.1', 19481, '/POKER_REST', verbose=6, timeout=10)
+ def test03_longPollSchedule(self):
+ class PokerRestClientTest(pokerrestclient.PokerRestClient):
+ def __init__(client):
+ pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10)
+ def sendPacketData(client, data):
+ return "[]"
+ client = PokerRestClientTest()
client.longPoll()
self.assertNotEquals(None, client.timer)
+ client.clearTimeout()
return client.queue
+ # --------------------------------------------------------------
+ def test04_sendPacketData(self):
+ class PokerRestClientTest(pokerrestclient.PokerRestClient):
+ def __init__(client):
+ pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10)
+ def longPoll(client):
+ pass
+ client = PokerRestClientTest()
+ d = client.sendPacketData('{"type": "PacketPokerTableSelect"}')
+ d.addCallback(lambda data: self.assertSubstring('PacketPokerTableList', data))
+ return d
+ # --------------------------------------------------------------
+ def test05_sendPacket(self):
+ class PokerRestClientTest(pokerrestclient.PokerRestClient):
+ def __init__(client):
+ pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST', lambda packets: None, verbose=6, timeout=10)
+ def longPoll(client):
+ pass
+ client = PokerRestClientTest()
+ d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}')
+ d.addCallback(lambda packets: self.assertEquals(PACKET_POKER_TABLE_LIST, packets[0].type))
+ return d
+ # --------------------------------------------------------------
+ def test06_404(self):
+ class PokerRestClientTest(pokerrestclient.PokerRestClient):
+ def __init__(client):
+ pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 19481, '/POKER_REST2', lambda packets: None, verbose=6, timeout=10)
+ def longPoll(client):
+ pass
+ client = PokerRestClientTest()
+ d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}')
+ d.addCallback(lambda packets: self.assertEquals(PACKET_ERROR, packets[0].type))
+ return d
+ # --------------------------------------------------------------
+ def test07_connectionFailed(self):
+ class PokerRestClientTest(pokerrestclient.PokerRestClient):
+ def __init__(client):
+ pokerrestclient.PokerRestClient.__init__(client, '127.0.0.1', 20000, '/POKER_REST', lambda packets: None, verbose=6, timeout=10)
+ def longPoll(client):
+ pass
+ client = PokerRestClientTest()
+ d = client.sendPacket(PacketPokerTableSelect(), '{"type": "PacketPokerTableSelect"}')
+ d.addCallback(lambda packets: self.assertEquals(PACKET_ERROR, packets[0].type))
+ return d
class MockRequest:
def finish(self): pass
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Pokersource-users mailing list [email protected] https://mail.gna.org/listinfo/pokersource-users
