Exemple #1
0
class Header(Message):
    # 协议的版本号
    version = Int32Field(field_number=1, default=1, oneof_id='version_present')
    # binlog/redolog 文件名
    logfileName = StringField(field_number=2)
    # binlog/redolog 文件的偏移位置
    logfileOffset = Int64Field(field_number=3)
    # 服务端serverId
    serverId = Int64Field(field_number=4)
    # 变更数据的编码
    serverenCode = StringField(field_number=5)
    # 变更数据的执行时间
    executeTime = Int64Field(field_number=6)
    # 变更数据的来源
    sourceType = EnumField(field_number=7,
                           default=Type.MYSQL,
                           enum_cls=Type,
                           oneof_id='sourceType_present')
    # 变更数据的schemaname
    schemaName = StringField(field_number=8)
    # 变更数据的tablename
    tableName = StringField(field_number=9)
    # 每个event的长度
    eventLength = Int64Field(field_number=10)
    # 数据变更类型
    eventType = EnumField(field_number=11,
                          default=EventType.UPDATE,
                          enum_cls=EventType,
                          oneof_id='eventType_present')
    # 预留扩展
    props = MessageField(field_number=12, repeated=True, message_cls=Pair)
    # 当前事务的gitd
    gtid = StringField(field_number=13)
Exemple #2
0
class Dump(Message):
    """TBD when new packets are required"""
    journal = StringField(field_number=1)
    position = Int64Field(field_number=2)
    timestamp = Int64Field(field_number=3,
                           default=0,
                           oneof_id='timestamp_present')
Exemple #3
0
class TransactionBegin(Message):
    """开始事务的一些信息"""
    # 已废弃,请使用header里的executeTime
    executeTime = Int64Field(field_number=1)
    # 已废弃,Begin里不提供事务id
    transactionId = StringField(field_number=2)
    # 预留扩展
    props = MessageField(field_number=3, repeated=True, message_cls=Pair)
    # 执行的thread Id
    threadId = Int64Field(field_number=4)
Exemple #4
0
class TransactionEnd(Message):
    """结束事务的一些信息"""
    # 已废弃,请使用header里的executeTime
    executeTime = Int64Field(field_number=1)
    # 事务号
    transactionId = StringField(field_number=2)
    # 预留扩展
    props = MessageField(field_number=3, repeated=True, message_cls=Pair)
Exemple #5
0
class ClientAuth(Message):
    username = StringField(field_number=1)
    password = BytesField(field_number=2)
    # in seconds
    net_read_timeout = Int32Field(field_number=3,
                                  default=0,
                                  oneof_id='net_read_timeout_present')
    # in seconds
    net_write_timeout = Int32Field(field_number=4,
                                   default=0,
                                   oneof_id='net_write_timeout_present')
    destination = StringField(field_number=5)
    client_id = StringField(field_number=6)
    filter = StringField(field_number=7)
    start_timestamp = Int64Field(field_number=8)
Exemple #6
0
class Get(Message):
    """PullRequest"""
    destination = StringField(field_number=1)
    client_id = StringField(field_number=2)
    fetch_size = Int32Field(field_number=3)
    # 默认-1时代表不控制
    timeout = Int64Field(field_number=4,
                         default=-1,
                         oneof_id='timeout_present')
    # 数字类型,0:纳秒,1:毫秒,2:微秒,3:秒,4:分钟,5:小时,6:天
    unit = Int32Field(field_number=5, default=2, oneof_id='unit_present')
    # 是否自动ack
    auto_ack = BoolField(field_number=6,
                         default=False,
                         oneof_id='auto_ack_present')
Exemple #7
0
class RowChange(Message):
    """message row 每行变更数据的数据结构"""
    # tableId,由数据库产生
    tableId = Int64Field(field_number=1)
    # 数据变更类型
    eventType = EnumField(field_number=2,
                          default=EventType.UPDATE,
                          enum_cls=EventType,
                          oneof_id='eventType_present')
    # 标识是否是ddl语句
    isDdl = BoolField(field_number=10, default=False, oneof_id='isDdl_present')
    # ddl/query的sql语句
    sql = StringField(field_number=11)
    # 一次数据库变更可能存在多行
    rowDatas = MessageField(field_number=12,
                            repeated=True,
                            message_cls=RowData)
    # 预留扩展
    props = MessageField(field_number=13, repeated=True, message_cls=Pair)
    # ddl/query的schemaName,会存在跨库ddl,需要保留执行ddl的当前schemaName
    ddlSchemaName = StringField(field_number=14, optional=True)

class SignedExchangeResponse(Message):
    pass


class ExchangeResponse(Message):
    pass

ExchangeAddress.add_field('coin_type', StringField(field_number=1, optional=True))
ExchangeAddress.add_field('address', StringField(field_number=2, optional=True))
ExchangeAddress.add_field('dest_tag', StringField(field_number=3, optional=True))
ExchangeAddress.add_field('rs_address', StringField(field_number=4, optional=True))
ExchangeResponseV2.add_field('deposit_address', MessageField(field_number=1, optional=True, message_cls=ExchangeAddress))
ExchangeResponseV2.add_field('deposit_amount', BytesField(field_number=2, optional=True))
ExchangeResponseV2.add_field('expiration', Int64Field(field_number=3, optional=True))
ExchangeResponseV2.add_field('quoted_rate', BytesField(field_number=4, optional=True))
ExchangeResponseV2.add_field('withdrawal_address', MessageField(field_number=5, optional=True, message_cls=ExchangeAddress))
ExchangeResponseV2.add_field('withdrawal_amount', BytesField(field_number=6, optional=True))
ExchangeResponseV2.add_field('return_address', MessageField(field_number=7, optional=True, message_cls=ExchangeAddress))
ExchangeResponseV2.add_field('api_key', BytesField(field_number=8, optional=True))
ExchangeResponseV2.add_field('miner_fee', BytesField(field_number=9, optional=True))
ExchangeResponseV2.add_field('order_id', BytesField(field_number=10, optional=True))
SignedExchangeResponse.add_field('response', MessageField(field_number=1, optional=True, message_cls=ExchangeResponse))
SignedExchangeResponse.add_field('signature', BytesField(field_number=2, optional=True))
SignedExchangeResponse.add_field('responseV2', MessageField(field_number=3, optional=True, message_cls=ExchangeResponseV2))
ExchangeResponse.add_field('deposit_address', MessageField(field_number=1, optional=True, message_cls=ExchangeAddress))
ExchangeResponse.add_field('deposit_amount', UInt64Field(field_number=2, optional=True))
ExchangeResponse.add_field('expiration', Int64Field(field_number=3, optional=True))
ExchangeResponse.add_field('quoted_rate', UInt64Field(field_number=4, optional=True))
ExchangeResponse.add_field('withdrawal_address', MessageField(field_number=5, optional=True, message_cls=ExchangeAddress))
Exemple #9
0
from protobuf3.message import Message
from protobuf3.fields import Int32Field, StringField, Int64Field, BytesField


class MintPayload(Message):
    pass


class MQMessage(Message):
    pass


MintPayload.add_field('partition', Int32Field(field_number=1, optional=True))
MintPayload.add_field('number', StringField(field_number=2, optional=True))
MintPayload.add_field('time', Int64Field(field_number=3, optional=True))
MQMessage.add_field('caller', StringField(field_number=1, optional=True))
MQMessage.add_field('matrix', StringField(field_number=2, optional=True))
MQMessage.add_field('device', StringField(field_number=3, optional=True))
MQMessage.add_field('resource', StringField(field_number=4, optional=True))
MQMessage.add_field('action', StringField(field_number=5, optional=True))
MQMessage.add_field('payload', BytesField(field_number=6, optional=True))
MQMessage.add_field('time', Int64Field(field_number=7, optional=True))
Exemple #10
0
class ClientAck(Message):
    destination = StringField(field_number=1)
    client_id = StringField(field_number=2)
    batch_id = Int64Field(field_number=3)
Exemple #11
0
class HeartBeat(Message):
    send_timestamp = Int64Field(field_number=1)
    start_timestamp = Int64Field(field_number=2)
Exemple #12
0
class Messages(Message):
    batch_id = Int64Field(field_number=1)
    messages = BytesField(field_number=2, repeated=True)