class RowData(Message): # 字段信息,增量数据(修改前,删除前) beforeColumns = MessageField(field_number=1, repeated=True, message_cls=Column) # 字段信息,增量数据(修改后,新增后) afterColumns = MessageField(field_number=2, repeated=True, message_cls=Column) # 预留扩展 props = MessageField(field_number=3, repeated=True, message_cls=Pair)
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)
class Entry(Message): # 协议头部信息 header = MessageField(field_number=1, message_cls=Header) entryType = EnumField(field_number=2, default=EntryType.ROWDATA, enum_cls=EntryType, oneof_id='entryType_present') storeValue = BytesField(field_number=3)
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)
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)
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 Column(Message): """每个字段的数据结构""" # 字段下标 index = Int32Field(field_number=1) # 字段java中类型 sqlType = Int32Field(field_number=2) # 字段名称(忽略大小写),在mysql中是没有的 name = StringField(field_number=3) # 是否是主键 isKey = BoolField(field_number=4) # 如果EventType=UPDATE,用于标识这个字段值是否有修改 updated = BoolField(field_number=5) # 标识是否为空 isNull = BoolField(field_number=6, default=False) # 预留扩展 props = MessageField(field_number=7, repeated=True, message_cls=Pair) # 字段值,timestamp,Datetime是一个时间格式的文本 value = StringField(field_number=8) # 对应数据对象原始长度 length = Int32Field(field_number=9) # 字段mysql类型 mysqlType = StringField(field_number=10) def to_json(self): return { 'index': self.index, 'sqlType': self.sqlType, 'name': self.name, 'isKey': self.isKey, 'updated': self.updated, 'isNull': self.isNull, 'props': [p.to_json() for p in self.props], 'value': self.value, 'length': self.length, 'mysqlType': self.mysqlType }
class SocketFamily(Enum): INET = 1 INET6 = 2 class SocketProtocol(Enum): UDP = 1 TCP = 2 Dnstap.add_field('identity', BytesField(field_number=1, optional=True)) Dnstap.add_field('version', BytesField(field_number=2, optional=True)) Dnstap.add_field('extra', BytesField(field_number=3, optional=True)) Dnstap.add_field('type', EnumField(field_number=15, required=True, enum_cls=Dnstap.Type)) Dnstap.add_field('message', MessageField(field_number=14, optional=True, message_cls=Message)) Message.add_field('type', EnumField(field_number=1, required=True, enum_cls=Message.Type)) Message.add_field('socket_family', EnumField(field_number=2, optional=True, enum_cls=SocketFamily)) Message.add_field('socket_protocol', EnumField(field_number=3, optional=True, enum_cls=SocketProtocol)) Message.add_field('query_address', BytesField(field_number=4, optional=True)) Message.add_field('response_address', BytesField(field_number=5, optional=True)) Message.add_field('query_port', UInt32Field(field_number=6, optional=True)) Message.add_field('response_port', UInt32Field(field_number=7, optional=True)) Message.add_field('query_time_sec', UInt64Field(field_number=8, optional=True)) Message.add_field('query_time_nsec', Fixed32Field(field_number=9, optional=True)) Message.add_field('query_message', BytesField(field_number=10, optional=True)) Message.add_field('query_zone', BytesField(field_number=11, optional=True)) Message.add_field('response_time_sec', UInt64Field(field_number=12, optional=True)) Message.add_field('response_time_nsec', Fixed32Field(field_number=13, optional=True)) Message.add_field('response_message', BytesField(field_number=14, optional=True))
EntityState.add_field('side', EnumField(field_number=3, optional=True, enum_cls=Side)) EntityState.add_field('hp', Int32Field(field_number=4, optional=True)) EntityState.add_field('energy', Int32Field(field_number=5, optional=True)) EntityState.add_field('max_energy', Int32Field(field_number=6, optional=True)) EntityState.add_field('energy_gain', Int32Field(field_number=7, optional=True)) EntityState.add_field('muted', BoolField(field_number=8, optional=True)) EntityState.add_field('armed', BoolField(field_number=9, optional=True)) EntityState.add_field('locked', BoolField(field_number=10, optional=True)) EntityState.add_field('damage_mod', Int32Field(field_number=11, optional=True)) EntityState.add_field('buffable', BoolField(field_number=12, optional=True)) EntityState.add_field('is_player', BoolField(field_number=13, optional=True)) EntityState.add_field('position', Int32Field(field_number=14, optional=True)) EntityState.add_field( 'buffs', MessageField(field_number=15, repeated=True, message_cls=BuffState)) EntityState.add_field('weapon_name', StringField(field_number=16, optional=True)) EntityState.add_field('ship_name', StringField(field_number=17, optional=True)) EntityState.add_field('hand_cards', Int32Field(field_number=18, optional=True)) EntityState.add_field('deck_cards', Int32Field(field_number=19, optional=True)) EntityState.add_field( 'hand', MessageField(field_number=20, repeated=True, message_cls=CardState)) GameState.add_field('id', StringField(field_number=1, optional=True)) GameState.add_field('turn', EnumField(field_number=2, optional=True, enum_cls=Side)) GameState.add_field( 'objects', MessageField(field_number=3, repeated=True, message_cls=EntityState))
from protobuf3.message import Message from protobuf3.fields import MessageField, Int32Field, StringField class BaseReply(Message): class SpareParameterEntry(Message): pass BaseReply.SpareParameterEntry.add_field( 'key', StringField(field_number=1, optional=True)) BaseReply.SpareParameterEntry.add_field( 'value', StringField(field_number=2, optional=True)) BaseReply.add_field('Code', Int32Field(field_number=1, optional=True)) BaseReply.add_field('Message', StringField(field_number=2, optional=True)) BaseReply.add_field( 'spareParameter', MessageField(field_number=3, repeated=True, message_cls=BaseReply.SpareParameterEntry))
from protobuf3.message import Message from protobuf3.fields import MessageField, BoolField, DoubleField class MemoryFramePb(Message): pass class EpisodeMemoryFramePb(Message): pass MemoryFramePb.add_field('obs', DoubleField(field_number=1, repeated=True)) MemoryFramePb.add_field('act', DoubleField(field_number=2, repeated=True)) MemoryFramePb.add_field('rew', DoubleField(field_number=3, optional=True)) MemoryFramePb.add_field('next_obs', DoubleField(field_number=4, repeated=True)) MemoryFramePb.add_field('done', BoolField(field_number=5, optional=True)) EpisodeMemoryFramePb.add_field( 'memory_frame', MessageField(field_number=1, repeated=True, message_cls=MemoryFramePb))
SnapshotP.PoseP.TranslationP.add_field( 'y', DoubleField(field_number=2, optional=True)) SnapshotP.PoseP.TranslationP.add_field( 'z', DoubleField(field_number=3, optional=True)) SnapshotP.PoseP.RotationP.add_field('x', DoubleField(field_number=1, optional=True)) SnapshotP.PoseP.RotationP.add_field('y', DoubleField(field_number=2, optional=True)) SnapshotP.PoseP.RotationP.add_field('z', DoubleField(field_number=3, optional=True)) SnapshotP.PoseP.RotationP.add_field('w', DoubleField(field_number=4, optional=True)) SnapshotP.PoseP.add_field( 'translation', MessageField(field_number=1, optional=True, message_cls=SnapshotP.PoseP.TranslationP)) SnapshotP.PoseP.add_field( 'rotation', MessageField(field_number=2, optional=True, message_cls=SnapshotP.PoseP.RotationP)) SnapshotP.ColorImageP.add_field('width', UInt32Field(field_number=1, optional=True)) SnapshotP.ColorImageP.add_field('height', UInt32Field(field_number=2, optional=True)) SnapshotP.ColorImageP.add_field('data', BytesField(field_number=3, optional=True)) SnapshotP.DepthImageP.add_field('width', UInt32Field(field_number=1, optional=True)) SnapshotP.DepthImageP.add_field('height',
ControlPointFileEntryV0002.Measure.add_field( 'jigsawRejected', BoolField(field_number=11, optional=True)) ControlPointFileEntryV0002.Measure.add_field( 'diameter', DoubleField(field_number=12, optional=True)) ControlPointFileEntryV0002.Measure.add_field( 'apriorisample', DoubleField(field_number=13, optional=True)) ControlPointFileEntryV0002.Measure.add_field( 'aprioriline', DoubleField(field_number=14, optional=True)) ControlPointFileEntryV0002.Measure.add_field( 'samplesigma', DoubleField(field_number=15, optional=True)) ControlPointFileEntryV0002.Measure.add_field( 'linesigma', DoubleField(field_number=16, optional=True)) ControlPointFileEntryV0002.Measure.add_field( 'log', MessageField( field_number=17, repeated=True, message_cls=ControlPointFileEntryV0002.Measure.MeasureLogData)) ControlPointFileEntryV0002.add_field( 'id', StringField(field_number=1, required=True)) ControlPointFileEntryV0002.add_field( 'type', EnumField(field_number=2, required=True, enum_cls=ControlPointFileEntryV0002.PointType)) ControlPointFileEntryV0002.add_field( 'chooserName', StringField(field_number=3, optional=True)) ControlPointFileEntryV0002.add_field( 'datetime', StringField(field_number=4, optional=True)) ControlPointFileEntryV0002.add_field('editLock', BoolField(field_number=5, optional=True)) ControlPointFileEntryV0002.add_field('ignore',
class Weight(Message): pass class Bias(Message): pass class Network(Message): class ActivationType(Enum): SIGMOID = 0 LINEAR = 1 RELU = 2 THRESHOLD = 3 SOFTMAX = 4 Weight.add_field('col', Int32Field(field_number=1, optional=True)) Weight.add_field('row', Int32Field(field_number=2, optional=True)) Weight.add_field('grid', DoubleField(field_number=3, repeated=True)) Bias.add_field('vector', DoubleField(field_number=1, repeated=True)) Network.add_field('layerSizes', Int32Field(field_number=1, repeated=True)) Network.add_field( 'activations', EnumField(field_number=2, repeated=True, enum_cls=Network.ActivationType)) Network.add_field( 'weights', MessageField(field_number=3, repeated=True, message_cls=Weight)) Network.add_field( 'biases', MessageField(field_number=4, repeated=True, message_cls=Bias))
class MapEdge(Message): pass Iso.MapNode.add_field('id_1', UInt64Field(field_number=1, required=True)) Iso.MapNode.add_field('id_2', UInt64Field(field_number=2, required=True)) Iso.MapNode.add_field('weight', DoubleField(field_number=3, optional=True)) Iso.MapEdge.add_field('id_1', UInt64Field(field_number=1, required=True)) Iso.MapEdge.add_field('id_2', UInt64Field(field_number=2, required=True)) Iso.MapEdge.add_field('weight', DoubleField(field_number=3, optional=True)) Iso.add_field('graph_1_id', StringField(field_number=1, required=True)) Iso.add_field('graph_2_id', StringField(field_number=2, required=True)) Iso.add_field( 'map_node', MessageField(field_number=3, repeated=True, message_cls=Iso.MapNode)) Iso.add_field( 'map_edge', MessageField(field_number=4, repeated=True, message_cls=Iso.MapEdge)) Iso.add_field('weight', DoubleField(field_number=5, optional=True)) Iso.add_field('obj_value', DoubleField(field_number=6, optional=True)) Iso.add_field('dataNodeMatchCount', UInt64Field(field_number=7, optional=True)) Iso.add_field('dataEdgeMatchCount', UInt64Field(field_number=8, optional=True)) Iso.add_field('controlEdgeMatchCount', UInt64Field(field_number=9, optional=True)) Iso.add_field('methodNodeMatchCount', UInt64Field(field_number=10, optional=True)) Iso.add_field('averageMatchWeight', DoubleField(field_number=11, optional=True)) Iso.add_field('averageDataNodeInDegree', DoubleField(field_number=12, optional=True))
class Details(Message): data = MessageField(field_number=1, repeated=True, message_cls=Transaction)
class AnswerType(Enum): STRING = 0 INT = 1 DOUBLE = 2 class Answer(Message): pass class AddTask(Message): pass Task.Answer.add_field('data', Int32Field(field_number=1, required=True)) Task.Answer.add_field( 'type', EnumField(field_number=2, optional=True, enum_cls=Task.AnswerType, default=Task.AnswerType.INT)) Task.add_field('id', Int32Field(field_number=1, required=True)) Task.add_field('title', StringField(field_number=2, optional=True)) Task.add_field('content', StringField(field_number=3, optional=True)) Task.add_field('score', Int32Field(field_number=4, required=True)) Task.add_field('author', StringField(field_number=5, optional=True)) Task.add_field( 'answer', MessageField(field_number=6, repeated=True, message_cls=Task.Answer)) AddTask.add_field( 'task', MessageField(field_number=1, repeated=True, message_cls=Task))
class DepthImage(Message): pass class Feelings(Message): pass User.add_field('user_id', UInt64Field(field_number=1, optional=True)) User.add_field('username', StringField(field_number=2, optional=True)) User.add_field('birthday', UInt32Field(field_number=3, optional=True)) User.add_field('gender', EnumField(field_number=4, optional=True, enum_cls=User.Gender)) Snapshot.add_field('datetime', UInt64Field(field_number=1, optional=True)) Snapshot.add_field('pose', MessageField(field_number=2, optional=True, message_cls=Pose)) Snapshot.add_field('color_image', MessageField(field_number=3, optional=True, message_cls=ColorImage)) Snapshot.add_field('depth_image', MessageField(field_number=4, optional=True, message_cls=DepthImage)) Snapshot.add_field('feelings', MessageField(field_number=5, optional=True, message_cls=Feelings)) Pose.Translation.add_field('x', DoubleField(field_number=1, optional=True)) Pose.Translation.add_field('y', DoubleField(field_number=2, optional=True)) Pose.Translation.add_field('z', DoubleField(field_number=3, optional=True)) Pose.Rotation.add_field('x', DoubleField(field_number=1, optional=True)) Pose.Rotation.add_field('y', DoubleField(field_number=2, optional=True)) Pose.Rotation.add_field('z', DoubleField(field_number=3, optional=True)) Pose.Rotation.add_field('w', DoubleField(field_number=4, optional=True)) Pose.add_field('translation', MessageField(field_number=1, optional=True, message_cls=Pose.Translation)) Pose.add_field('rotation', MessageField(field_number=2, optional=True, message_cls=Pose.Rotation)) ColorImage.add_field('width', UInt32Field(field_number=1, optional=True)) ColorImage.add_field('height', UInt32Field(field_number=2, optional=True)) ColorImage.add_field('data', BytesField(field_number=3, optional=True))
class ExchangeResponseV2(Message): pass 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))
Acdfg.ExceptionalControlEdge.add_field('id', UInt64Field(field_number=1, required=True)) Acdfg.ExceptionalControlEdge.add_field('from', UInt64Field(field_number=2, required=True)) Acdfg.ExceptionalControlEdge.add_field('to', UInt64Field(field_number=3, required=True)) Acdfg.ExceptionalControlEdge.add_field('exceptions', StringField(field_number=4, repeated=True)) Acdfg.LabelMap.add_field('edge_id', UInt64Field(field_number=1, required=True)) Acdfg.LabelMap.add_field('labels', EnumField(field_number=2, repeated=True, enum_cls=Acdfg.EdgeLabel)) Acdfg.RepoTag.add_field('repo_name', StringField(field_number=1, optional=True)) Acdfg.RepoTag.add_field('user_name', StringField(field_number=2, optional=True)) Acdfg.RepoTag.add_field('url', StringField(field_number=3, optional=True)) Acdfg.RepoTag.add_field('commit_hash', StringField(field_number=4, optional=True)) Acdfg.MethodBag.add_field('method', StringField(field_number=1, repeated=True)) Acdfg.SourceInfo.add_field('package_name', StringField(field_number=1, optional=True)) Acdfg.SourceInfo.add_field('class_name', StringField(field_number=2, optional=True)) Acdfg.SourceInfo.add_field('method_name', StringField(field_number=3, optional=True)) Acdfg.SourceInfo.add_field('class_line_number', UInt32Field(field_number=4, optional=True)) Acdfg.SourceInfo.add_field('method_line_number', UInt32Field(field_number=5, optional=True)) Acdfg.SourceInfo.add_field('source_class_name', StringField(field_number=6, optional=True)) Acdfg.SourceInfo.add_field('abs_source_class_name', StringField(field_number=7, optional=True)) Acdfg.add_field('data_node', MessageField(field_number=1, repeated=True, message_cls=Acdfg.DataNode)) Acdfg.add_field('misc_node', MessageField(field_number=2, repeated=True, message_cls=Acdfg.MiscNode)) Acdfg.add_field('method_node', MessageField(field_number=3, repeated=True, message_cls=Acdfg.MethodNode)) Acdfg.add_field('control_edge', MessageField(field_number=4, repeated=True, message_cls=Acdfg.ControlEdge)) Acdfg.add_field('def_edge', MessageField(field_number=5, repeated=True, message_cls=Acdfg.DefEdge)) Acdfg.add_field('use_edge', MessageField(field_number=6, repeated=True, message_cls=Acdfg.UseEdge)) Acdfg.add_field('trans_edge', MessageField(field_number=7, repeated=True, message_cls=Acdfg.TransEdge)) Acdfg.add_field('exceptional_edge', MessageField(field_number=12, repeated=True, message_cls=Acdfg.ExceptionalControlEdge)) Acdfg.add_field('edge_labels', MessageField(field_number=11, repeated=True, message_cls=Acdfg.LabelMap)) Acdfg.add_field('repo_tag', MessageField(field_number=8, optional=True, message_cls=Acdfg.RepoTag)) Acdfg.add_field('source_info', MessageField(field_number=10, optional=True, message_cls=Acdfg.SourceInfo)) Acdfg.add_field('method_bag', MessageField(field_number=9, optional=True, message_cls=Acdfg.MethodBag))