Esempio n. 1
0
    def haveNoRouteOutgoing(self, transactionID, isPayerSide):
        self.state = self.states.cancelled

        return self.__removeTimeouts() + \
        [
        messages.OutboundMessage(localID = messages.payerLocalID, message = \
         messages.Cancel()
        ),
        messages.SetEvent(event=messages.SetEvent.events.paymentFinished)
        ]
Esempio n. 2
0
    def haveNoRouteOutgoing(self, transactionID, isPayerSide):
        if self.state != self.states.confirmed:
            raise Exception(
             "haveNoRouteOutgoing should not be called in state %s" % \
              self.state
             )

        self.state = self.states.cancelled

        return \
        [
        messages.OutboundMessage(localID = self.ID, message = \
         messages.Cancel()
         )
        ]
Esempio n. 3
0
    def settleRollbackOutgoing(self, msg):
        if self.state != self.states.locked:
            raise Exception(
             "settleRollbackOutgoing should not be called in state %s" % \
              self.state
             )

        log.log("Payer: received settleRollback -> cancelled")
        self.state = self.states.cancelled

        return self.__removeTimeouts() + \
        [
        messages.OutboundMessage(localID = messages.payerLocalID, message = \
         messages.Cancel()
        ),
        messages.SetEvent(event=messages.SetEvent.events.paymentFinished)
        ]
Esempio n. 4
0
    def msg_confirm(self, msg):
        log.log("PayerLink: Received confirm: %s" % str(msg.agreement))

        if self.state != self.states.hasReceipt:
            raise Exception(
             "msg_confirm should not be called in state %s" % \
              self.state
             )

        ret = []

        if msg.agreement:
            self.state = self.states.confirmed

            ret = \
            [
            messages.OutboundMessage(localID = messages.payerLocalID, message = \
             messages.Confirm(meetingPointID=self.meetingPointID)
            ),
            messages.MakeRoute( #This will start the transaction routing
             ID=messages.payerLocalID,
             routingContext=self.routingContext,
             amount=self.amount,
             transactionID=self.transactionID,
             startTime=None, #Will be received from the payee side
             endTime=None, #Will be received from the payee side
             meetingPointID=self.meetingPointID,
             isPayerSide=True
             )
            ]

        else:
            self.state = self.states.cancelled

            ret = self.__removeTimeouts() + \
            [
            messages.OutboundMessage(localID = messages.payerLocalID, message = \
             messages.Cancel()
            ),
            messages.SetEvent(event=messages.SetEvent.events.paymentFinished)
            ]

        return ret
Esempio n. 5
0
 def parse_message_from_response(self):
     length = messages.bytes_to_number(
         self.message_buffer[0:4]
     ) + 4  #length indicated by the first 4 bytes + 4 for those first 4 bytes
     bytestring = self.message_buffer[:length]
     if self.message_buffer[0:4] == '\x00\x00\x00\x00':  #no msg_id
         message_obj = KeepAlive(response=bytestring)
     else:
         message_obj = {
             0: lambda: messages.Choke(response=bytestring),
             1: lambda: messages.Unchoke(response=bytestring),
             2: lambda: messages.Interested(response=bytestring),
             3: lambda: messaged.Interested(response=bytestring),
             4: lambda: messages.Have(response=bytestring),
             5: lambda: messages.Bitfield(response=bytestring),
             6: lambda: messages.Request(response=bytestring),
             7: lambda: messages.Piece(response=bytestring),
             8: lambda: messages.Cancel(response=bytestring),
             9: lambda: messages.Port(response=bytestring),
         }[self.message_buffer[4]]()  #response[4] is the msg_id
     self.message_buffer = self.message_buffer[length:]
     return message_obj