Added construct functions to all TLVs that did not have one.
This commit is contained in:
		@@ -83,6 +83,12 @@ class Pad1TLV(TLV):
 | 
			
		||||
        """
 | 
			
		||||
        return 1
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def construct() -> "Pad1TLV":
 | 
			
		||||
        tlv = Pad1TLV()
 | 
			
		||||
        tlv.type = 0
 | 
			
		||||
        return tlv
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PadNTLV(TLV):
 | 
			
		||||
    """
 | 
			
		||||
@@ -116,6 +122,13 @@ class PadNTLV(TLV):
 | 
			
		||||
        # TODO Add some easter eggs
 | 
			
		||||
        squirrel.add_system_message(f"I received {self.length} zeros, am I so a bag guy ? :cold_sweat:")
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def construct(length: int) -> "Pad1TLV":
 | 
			
		||||
        tlv = PadNTLV()
 | 
			
		||||
        tlv.type = 1
 | 
			
		||||
        tlv.length = length
 | 
			
		||||
        tlv.mbz = b'0'*length
 | 
			
		||||
        return tlv
 | 
			
		||||
 | 
			
		||||
class HelloTLV(TLV):
 | 
			
		||||
    type: int = 2
 | 
			
		||||
@@ -147,7 +160,7 @@ class HelloTLV(TLV):
 | 
			
		||||
        timeH = time.time()
 | 
			
		||||
        timeHL = None
 | 
			
		||||
        if not squirrel.is_active(sender) :
 | 
			
		||||
            sender.id = source_id #The sender we are given misses an id
 | 
			
		||||
            sender.id = self.source_id #The sender we are given misses an id
 | 
			
		||||
        else :
 | 
			
		||||
            timeHL = squirrel.activehazelnuts[(sender.address, sender.port)]
 | 
			
		||||
        if self.is_long and dest_id == squirrel.id :
 | 
			
		||||
@@ -165,6 +178,18 @@ class HelloTLV(TLV):
 | 
			
		||||
    def is_long(self) -> bool:
 | 
			
		||||
        return self.length == 16
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def construct(length: str, squirrel: Any) -> "HelloTLV":
 | 
			
		||||
        tlv = HelloTLV()
 | 
			
		||||
        tlv.type = 2
 | 
			
		||||
        tlv.source_id = squirrel.id if squirrel else 0
 | 
			
		||||
        if length == "short":
 | 
			
		||||
            tlv.length = 8
 | 
			
		||||
        else :
 | 
			
		||||
            tlv.length = 16
 | 
			
		||||
        tlv.dest_id = None
 | 
			
		||||
        return tlv
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NeighbourTLV(TLV):
 | 
			
		||||
    type: int = 3
 | 
			
		||||
@@ -189,6 +214,14 @@ class NeighbourTLV(TLV):
 | 
			
		||||
            squirrel.potentialhazelnuts[(ip_address, port)] = squirrel.new_hazel(ip_address, port)
 | 
			
		||||
        squirrel.add_system_message(f"New potential friend {self.ip_address}:{self.port}!")
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def construct(address: IPv6Address, port: int) -> "Pad1TLV":
 | 
			
		||||
        tlv = NeighbourTLV()
 | 
			
		||||
        tlv.type = 3
 | 
			
		||||
        tlv.length = 18 #A priori...
 | 
			
		||||
        tlv.ip_address = address
 | 
			
		||||
        tlv.port = port
 | 
			
		||||
        return tlv
 | 
			
		||||
 | 
			
		||||
class DataTLV(TLV):
 | 
			
		||||
    type: int = 4
 | 
			
		||||
@@ -320,6 +353,14 @@ class GoAwayTLV(TLV):
 | 
			
		||||
            squirrel.potentialhazelnuts[(sender.address, sender.port)] = sender
 | 
			
		||||
        squirrel.add_system_message("Some told me that he went away : "+message)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def construct(GAtype: GoAwayType, message: str) -> "Pad1TLV":
 | 
			
		||||
        tlv = GoAwayTLV()
 | 
			
		||||
        tlv.type = 6
 | 
			
		||||
        tlv.code = GAtype
 | 
			
		||||
        tlv.message = message.encode("UTF-8")
 | 
			
		||||
        tlv.length = 1 + len(tlv.message)
 | 
			
		||||
        return tlv
 | 
			
		||||
 | 
			
		||||
class WarningTLV(TLV):
 | 
			
		||||
    type: int = 7
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user