Esempio n. 1
0
class Broker(object):
    def __init__(self):
        self.messageQueue = Queue()
        self.netReader = IO_Network(BROKER_PORT, 'localhost')
        self.netReader.bind()
        self.netWriter = IO_Network(DEFAULT_PORT, 'localhost')
        self.subscribers = []

    def listen(self):
        while True:
            msg = self.netWriter.read(None)
            self.messageQueue.put(msg)

    def send(self):
        while True:
            msg = self.messageQueue.get()
            if msg.type == 'subscription':
                self.subscribers.append(msg.body)
            elif msg.type == 'message':
                for subscriber in self.subscribers:
                    if subscriber.id == msg.receiver:
                        self.netWriter.port = subscriber.port
                        self.netWriter.host = subscriber.ip
                        break
                if msg.body == 'close':
                    self.netWriter.write(msg.receiver, msg)
                    self.netReader.close_socket()
                    self.netWriter.close_socket()

    def main(self):
        print 'here'
        thread.start_new_thread(self.listen, ())
        # thread.start_new_thread(self.send, ())
        self.send()
Esempio n. 2
0
class Receiver(object):
    def __init__(self):
        self.netReader = IO_Network(DEFAULT_PORT, 'localhost')
        self.netReader.bind()
        self.netWriter = IO_Network(BROKER_PORT, 'localhost')
        self.fileWriter = IO_File()
        print 'Socket bind complete'

    def listen(self):
        while True:
            msg = self.netReader.read(None)
            print '\nReceived message:{0}'.format(msg.body)
            self.fileWriter.write('received.xml', msg.body)


    def send(self):
        myself = Subscriber()
        myself.port = DEFAULT_PORT
        myself.ip = 'localhost'
        myself.id = 'app2'

        message = Message()
        message.type = 'subscription'
        message.senderID = 'app2'
        message.receiverID = 'broker'
        message.body = myself

        self.netWriter.write('broker', message)
Esempio n. 3
0
class Receiver(object):
    def __init__(self):
        self.netReader = IO_Network(DEFAULT_PORT, 'localhost')
        self.netReader.bind()
        self.netWriter = IO_Network(BROKER_PORT, 'localhost')
        print 'Socket bind complete'

    def listen(self):
        while True:
            msg = self.netReader.read(None)
            if msg.body == 'close':
                self.netWriter.close_socket()
                self.netReader.close_socket()
            print '\nReceived message:{0}'.format(msg.body)

    def send(self):
        myself = Subscriber()
        myself.port = DEFAULT_PORT
        myself.ip = 'localhost'
        myself.id = 'sender'

        message = Message()
        message.type = 'subscription'
        message.senderID = 'sender'
        message.receiverID = 'receiver'
        message.body = myself

        self.netWriter.write('broker', message)
Esempio n. 4
0
class Broker(object):
    def __init__(self):
        self.messageQueue = Queue()
        self.netReader = IO_Network(BROKER_PORT, 'localhost')
        self.netReader.bind()
        self.netWriter = IO_Network(DEFAULT_PORT, 'localhost')
        self.subscribers = []

    def listen(self):
        while True:
            msg = self.netReader.read(None)
            self.messageQueue.put(msg)

    def send(self):
        while True:
            msg = self.messageQueue.get()
            if msg.type == 'subscription':
                print 'received subscription from: ' + msg.senderID
                self.subscribers.append(msg.body)
            elif msg.type == 'message':
                for subscriber in self.subscribers:
                    if subscriber.id == msg.receiverID:
                        self.netWriter.port = subscriber.port
                        self.netWriter.host = subscriber.ip
                        print 'message for ' + str(subscriber)
                        self.netWriter.write(msg.receiverID, msg)
                        break

    def main(self):
        print 'here'
        thread.start_new_thread(self.send, ())
        self.listen()