| 43 | |
| 44 | |
| 45 | class TxServer(MessagingHandler): |
| 46 | def __init__(self, host, address): |
| 47 | super(TxServer, self).__init__(auto_accept=False) |
| 48 | self.host = host |
| 49 | self.address = address |
| 50 | |
| 51 | def on_start(self, event): |
| 52 | self.container = event.container |
| 53 | self.conn = event.container.connect(self.host, reconnect=False, desired_capabilities=["ANONYMOUS-RELAY"]) |
| 54 | self.receiver = event.container.create_receiver(self.conn, self.address) |
| 55 | self.senders = {} |
| 56 | self.relay = None |
| 57 | |
| 58 | def on_message(self, event): |
| 59 | sender = self.relay |
| 60 | if not sender: |
| 61 | sender = self.senders.get(event.message.reply_to) |
| 62 | if not sender: |
| 63 | sender = self.container.create_sender(self.conn, event.message.reply_to) |
| 64 | self.senders[event.message.reply_to] = sender |
| 65 | |
| 66 | response = Message(address=event.message.reply_to, body=event.message.body.upper(), |
| 67 | correlation_id=event.message.correlation_id) |
| 68 | self.container.declare_transaction(self.conn, handler=TxRequest(response, sender, event.delivery)) |
| 69 | |
| 70 | def on_connection_opened(self, event): |
| 71 | capabilities = event.connection.remote_offered_capabilities |
| 72 | if capabilities and 'ANONYMOUS-RELAY' in capabilities: |
| 73 | self.relay = self.container.create_sender(self.conn, None) |
| 74 | |
| 75 | |
| 76 | try: |