예제 #1
0
    def get_random_product(self, queue):
        """ Pull the data for a random product - useful for testing """
        packet = Packet(PacketTypes.RandomProduct, {})
        message = Message(packet).get_xml()

        self.send_queue.put(
            MessagingQueueItem(PacketTypes.GetRandomProduct, message, queue))
예제 #2
0
    def get_user_data(self, rfid, queue):
        """ Get the user data associated with the rfid """
        packet = Packet(PacketTypes.GetUser, {"rfid": rfid})
        message = Message(packet).get_xml()

        self.send_queue.put(
            MessagingQueueItem(PacketTypes.GetUser, message, queue))
예제 #3
0
    def get_product(self, barcode, queue):
        """ Get the product data associated with the barcode """
        packet = Packet(PacketTypes.GetProduct, {"barcode": barcode})
        message = Message(packet).get_xml()

        self.send_queue.put(
            MessagingQueueItem(PacketTypes.GetProduct, message, queue))
예제 #4
0
    def process_packets(self, packets):
        """ Process a list of packets """

        reply = Message()  ## The reply starts as an empty message

        for packet in packets:

            self.logger.info("Handling '%s' packet..." % packet.type)

            if packet.type == PacketTypes.Ping:
                reply.add_packet(Packet(PacketTypes.PingReply))
            elif packet.type == PacketTypes.GetProduct:
                reply.add_packet(self.get_product_from_data(packet.data))
            elif packet.type == PacketTypes.GetUser:
                reply.add_packet(self.get_user_from_data(packet.data))
            elif packet.type == PacketTypes.Transaction:
                reply.add_packet(self.apply_transaction_from_data(packet.data))
            elif packet.type == PacketTypes.AddProduct:
                reply.add_packet(self.add_product_from_data(packet.data))
            elif packet.type == PacketTypes.AddCredit:
                reply.add_packet(self.add_credit_from_data(packet.data))
            elif packet.type == PacketTypes.GetRandomProduct:
                reply.add_packet(self.get_random_product_packet())
            elif packet.type == PacketTypes.PingReply:
                pass  # No action required for ping reply
            else:
                self.logger.warning("Unknown packet '%s'" % packet.type)

        return reply.get_xml()
예제 #5
0
파일: secfacUI.py 프로젝트: Raveline/Secfac
 def append_char(self, char):
     submenu = self.pane.shortcuts.get(char, None)
     if submenu is not None:
         self.change_menu_action(submenu)
         if submenu.children or submenu.explaining_text:
             self.pane.enter_branch(submenu)
         else:
             messages.receive(Message(self.currentAction, self.currentComplement))
예제 #6
0
    def ping_server(self):
        """ Ping the server to test it's still there """
        self.logger.info("Testing connection on %s port %d" %
                         self.server_address)

        message = Message(PacketTypes.Ping).get_xml()

        self.send_queue.put(MessagingQueueItem(PacketTypes.Ping, message,
                                               None))
예제 #7
0
    def add_credit(self, member_id, amountinpence, queue):
        """ Add credit to a user account """
        packet = Packet(PacketTypes.AddCredit, {
            "memberid": member_id,
            "amountinpence": amountinpence
        })
        message = Message(packet).get_xml()

        self.send_queue.put(
            MessagingQueueItem(PacketTypes.AddCredit, message, queue))
예제 #8
0
def parse_reply(message):
    """ Convert byte-level message into XML """
    dom = parseString(message)

    packets = dom.getElementsByTagName('packet')

    for packet in packets:
        packettype = packet.attributes.getNamedItem("type").value

        if packettype == PacketTypes.Ping:
            return Message(PacketTypes.PingReply)
예제 #9
0
    def add_product(self, barcode, description, price_in_pence, queue):
        """ Add a new product to the database """
        packet = Packet(
            PacketTypes.AddProduct, {
                "barcode": barcode,
                "description": description,
                "price_in_pence": price_in_pence
            })
        message = Message(packet).get_xml()

        self.send_queue.put(
            MessagingQueueItem(PacketTypes.AddProduct, message, queue))
예제 #10
0
    def send_transactions(self, productdata, member_id, queue):
        """ Send transaction requests to the server """
        self.logger.info("Sending transactions")

        message = Message()

        for (barcode, count) in productdata:
            packet = Packet(PacketTypes.Transaction, {
                "barcode": barcode,
                "memberid": member_id,
                "count": count
            })
            message.add_packet(packet)

        self.send_queue.put(
            MessagingQueueItem(PacketTypes.Transaction, message.get_xml(),
                               queue))
예제 #11
0
 def to_message_json(self):
     m_type = Message.MessageType.BIKE_TAKE if self.type == Event.EventType.BIKE_TAKE else Message.MessageType.BIKE_RETURN
     message = Message(m_type, self.__dict__)
     return message.to_json()
예제 #12
0
파일: secfacUI.py 프로젝트: Raveline/Secfac
 def escape(self):
     if self.pane.can_go_back():
         self.pane.go_back()
         self.change_menu_action(self.pane.current_branch)
     else:
         messages.receive(Message(Message.QUIT))
예제 #13
0
파일: secfacUI.py 프로젝트: Raveline/Secfac
 def sendAreaMessage(self):
     if self.currentAction is not Message.VIEW:
         for x in range(self.selection.x, self.selection.x2 + 1):
             for y in range(self.selection.y, self.selection.y2 + 1):
                 messages.receive(Message(self.currentAction, (x,y)))
from messaging import listify
import messaging
from messaging import Message, header2int
import random

random.seed(11)

reqs = [
    Message(header2int['R_ATTACK'], (0, 3), [[-1, 9]]),
    Message(header2int['R_MOVE'], (2, 3), [3]),
    Message(header2int['R_MOVE'], (1, 14), [2]),
    Message(header2int['R_MOVE'], (0, 10), [0]),
    # Message(header2int['SPAWN'], 2, [(2,16)]),
    Message(header2int['SPAWN'], 2, [[2, 16]]),
    Message(header2int['R_ATTACK'], (1, 10), [[-1, 4]]),
    Message(header2int['R_MOVE'], (0, 10), [0]),
    Message(header2int['R_ATTACK'], (2, 7), [[-1, 8]]),
]

random.shuffle(reqs, lambda: random.random())

reqs.sort()
# random.shuffle(reqs, lambda: random.random())

for r in reqs:
    print(r)
'''
Fri 20:17:21.498 0   Message Message::R_ATTACK from (0, 3) with args:[[-1, 9]] from (0, 3) was processed successfully. DAS feedback: Knight {0|3} attacks Dragon {-1|9} for 1 damage, reducing its hp from 974 to 973.
Fri 20:17:21.498 0   Message Message::R_MOVE from (2, 13) with args:[3] from (2, 13) was processed successfully. DAS feedback: Knight {2|13} moves down from (1, 10) to (2, 10).
Fri 20:17:21.498 0   Message Message::R_MOVE from (1, 14) with args:[2] from (1, 14) was processed successfully. DAS feedback: Knight {1|14} moves left from (1, 20) to (1, 19).
Fri 20:17:21.498 0   Message Message::R_MOVE from (0, 10) with args:[0] from (0, 10) was processed successfully. DAS feedback: Knight {0|10} moves right from (13, 5) to (13, 6).
예제 #15
0
 def kill_station(self, id):
     kill_message = Message(Message.MessageType.SHUTDOWN, {})
     addr = self.stations[id]
     resp = requests.post(addr, data=kill_message.to_json())
     if resp.status_code == 200:
         print("Success in shutdown of ", id)
예제 #16
0
 def send(self, points, points_info):
     if self.cooperate:
         message = Message(self, points, points_info)
         self.message_dispatcher.broadcast(message)