pygnetic / test_client_2.py

"""Echo client"""

import random
import logging
import pygnetic as net


class EchoHandler(net.Handler):
    def __init__(self):
        self.out_counter = 0
        self.in_counter = 0

    def net_echo(self, message, **kwargs):
        logging.info('Received message: %s', message)
        self.in_counter += 1
        if self.in_counter == 10:
            self.connection.disconnect()

    def update(self):
        if self.out_counter < 10 and self.connection.connected:
            msg = ''.join(random.sample('abcdefghijklmnopqrstuvwxyz', 10))
            logging.info('Sending: %s', msg)
            self.connection.net_echo(msg, self.out_counter)
            self.out_counter += 1


def main():
    net.init(logging_lvl=logging.DEBUG)
    net.register('echo', ('msg', 'msg_id'))
    client = net.Client()
    connection = client.connect("localhost", 1337)
    handler = EchoHandler()
    connection.add_handler(handler)
    try:
        while handler.in_counter < 10:
            client.update()
            handler.update()
    except KeyboardInterrupt:
        pass


if __name__ == '__main__':
    main()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.