def test_echo(self):
        TcpServer(self.ip, self.port, EchoService)
        client = TcpClient(self.ip, self.port, EchoClient, IEchoService_Stub)

        client.async_connect()

        echo_recorder = EchoRecorder()
        rpc_count = 0

        for i in xrange(10):
            asyncore.loop(0.1, count=1)
            if client.stub:
                if not client.service.streamout:
                    client.service.set_streamout(echo_recorder)
                request = EchoString()
                request.message = str(rpc_count)
                controller = RpcController(client.rpc_channel)
                client.stub.echo(controller, request, None)
                rpc_count += 1

        asyncore.loop(0.1, count=30)

        self.assertEqual(len(echo_recorder.record), rpc_count)

        echo_recorder.record.sort(cmp=lambda x, y: int(x) < int(y))
        for i in xrange(rpc_count):
            self.assertEqual(echo_recorder.record[i], str(i))
    def test_connection(self):
        server = TcpServer(self.ip, self.port, DummyService)
        client = TcpClient(self.ip, self.port, DummyService, DummyStub)
        client.async_connect()

        asyncore.loop(timeout=0.1, count=10)

        self.assertEqual(client.status, TcpConnection.ST_ESTABLISHED)

        server.close()
        client.close()
# coding:utf8
import sys
sys.path.append('../')

from proto.game_service_pb2 import IEchoService_Stub,IEchoClient,RequestMessage
from rpc.tcp_client import TcpClient
import asyncore

LISTEN_IP = "127.0.0.1"
LISTEN_PORT = 1888

# 被调用方,接收调用方(stub)的rpc请求
class MyEchoClientReply(IEchoClient):
	def echo_reply(self, rpc_controller, request, done):
		print "MyEchoClientReply:%s"%request.msg
		

if __name__ == "__main__":
	request = RequestMessage()
	request.msg = "just for test"
	
	client = TcpClient(LISTEN_IP, LISTEN_PORT, IEchoService_Stub, MyEchoClientReply)
	client.sync_connect()
	
	client.stub.echo(None, request, None)
	
	asyncore.loop()