class SlaveInfo(Serializable): FIELDS = [ ("id", PrependedSizeBytesSerializer(4)), ("host", PrependedSizeBytesSerializer(4)), ("port", uint16), ("chain_mask_list", PrependedSizeListSerializer(4, ChainMask)), ] def __init__(self, id, host, port, chain_mask_list): self.id = id if isinstance(id, bytes) else bytes(id, "ascii") self.host = host if isinstance(host, bytes) else bytes(host, "ascii") self.port = port self.chain_mask_list = chain_mask_list
class SlaveInfo(Serializable): FIELDS = [ ("id", PrependedSizeBytesSerializer(4)), ("host", PrependedSizeBytesSerializer(4)), ("port", uint16), ("full_shard_id_list", PrependedSizeListSerializer(4, uint32)), ] def __init__(self, id, host, port, full_shard_id_list): self.id = id if isinstance(id, bytes) else bytes(id, "ascii") self.host = host if isinstance(host, bytes) else bytes(host, "ascii") self.port = port self.full_shard_id_list = full_shard_id_list
class GetCodeResponse(Serializable): FIELDS = [("error_code", uint32), ("result", PrependedSizeBytesSerializer(4))] def __init__(self, error_code: int, result: bytes): self.error_code = error_code self.result = result
class AddMinorBlockRequest(Serializable): """For adding blocks mined through JRPC""" FIELDS = [("minor_block_data", PrependedSizeBytesSerializer(4))] def __init__(self, minor_block_data): self.minor_block_data = minor_block_data
class ExecuteTransactionResponse(Serializable): FIELDS = [("error_code", uint32), ("result", PrependedSizeBytesSerializer(4))] def __init__(self, error_code, result): self.error_code = error_code self.result = result
class ConnectToSlavesResponse(Serializable): """ result_list must have the same size as salve_info_list in the request. Empty result means success otherwise it would a serialized error message. """ FIELDS = [("result_list", PrependedSizeListSerializer(4, PrependedSizeBytesSerializer(4)))] def __init__(self, result_list): self.result_list = result_list
class GetTransactionListByAddressResponse(Serializable): FIELDS = [ ("error_code", uint32), ("tx_list", PrependedSizeListSerializer(4, TransactionDetail)), ("next", PrependedSizeBytesSerializer(4)), ] def __init__(self, error_code, tx_list, next): self.error_code = error_code self.tx_list = tx_list self.next = next
class GetTransactionListByAddressRequest(Serializable): FIELDS = [ ("address", Address), ("start", PrependedSizeBytesSerializer(4)), ("limit", uint32), ] def __init__(self, address, start, limit): self.address = address self.start = start self.limit = limit
class GetAllTransactionsRequest(Serializable): FIELDS = [ ("branch", Branch), ("start", PrependedSizeBytesSerializer(4)), ("limit", uint32), ] def __init__(self, branch, start, limit): self.branch = branch self.start = start self.limit = limit
class GetTotalBalanceResponse(Serializable): FIELDS = [ ("error_code", uint32), ("total_balance", biguint), ("next", PrependedSizeBytesSerializer(4)), ] def __init__(self, error_code: int, total_balance: int, next: bytes): self.error_code = error_code self.total_balance = total_balance self.next = next
class Pong(Serializable): FIELDS = [ ("id", PrependedSizeBytesSerializer(4)), ("shard_mask_list", PrependedSizeListSerializer(4, ShardMask)), ] def __init__(self, id, shard_mask_list): """ Empty slave_id and shard_mask_list means root """ if isinstance(id, bytes): self.id = id else: self.id = bytes(id, "ascii") self.shard_mask_list = shard_mask_list
class Pong(Serializable): FIELDS = [ ("id", PrependedSizeBytesSerializer(4)), ("full_shard_id_list", PrependedSizeListSerializer(4, uint32)), ] def __init__(self, id, full_shard_id_list): """ Empty slave_id and full_shard_id_list means root """ if isinstance(id, bytes): self.id = id else: self.id = bytes(id, "ascii") self.full_shard_id_list = full_shard_id_list
class Ping(Serializable): FIELDS = [ ("id", PrependedSizeBytesSerializer(4)), ("shard_mask_list", PrependedSizeListSerializer(4, ShardMask)), ("root_tip", Optional(RootBlock)), # Initialize ShardState if not None ] def __init__(self, id, shard_mask_list, root_tip): """ Empty shard_mask_list means root """ if isinstance(id, bytes): self.id = id else: self.id = bytes(id, "ascii") self.shard_mask_list = shard_mask_list self.root_tip = root_tip
class SlaveInfo(Serializable): FIELDS = [ ("id", PrependedSizeBytesSerializer(4)), ("ip", uint128), ("port", uint16), ("shard_mask_list", PrependedSizeListSerializer(4, ShardMask)), ] def __init__(self, id, ip, port, shard_mask_list): if isinstance(id, bytes): self.id = id else: self.id = bytes(id, "ascii") self.ip = ip self.port = port self.shard_mask_list = shard_mask_list