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')
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 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)
BuffState.add_field('name', StringField(field_number=1, optional=True)) BuffState.add_field('duration', Int32Field(field_number=2, optional=True)) CardState.add_field('name', StringField(field_number=1, optional=True)) CardState.add_field('cost_offense', Int32Field(field_number=2, optional=True)) CardState.add_field('cost_defense', Int32Field(field_number=3, optional=True)) EntityState.add_field('id', Int32Field(field_number=1, optional=True)) EntityState.add_field('name', StringField(field_number=2, 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))
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))
class AdbModeRequest(Message): enable = BoolField(field_number=1)
class OtaEnabledResponse(Message): enabled = BoolField(field_number=1)
class OtaEnabledRequest(Message): enable = BoolField(field_number=1)
class HelloSignedData(Message): serverPublicKey = BytesField(field_number=1) authenticationChallenge = BytesField(field_number=2) deviceNeedsToBeUnlocked = BoolField(field_number=3)
StringField(field_number=4, optional=True)) ControlNetFileHeaderV0002.add_field('description', StringField(field_number=5, optional=True)) ControlNetFileHeaderV0002.add_field('userName', StringField(field_number=6, optional=True)) ControlNetFileHeaderV0002.add_field('pointMessageSizes', Int32Field(field_number=7, repeated=True)) ControlPointFileEntryV0002.PointLogData.add_field( 'doubleDataType', Int32Field(field_number=1, optional=True)) ControlPointFileEntryV0002.PointLogData.add_field( 'doubleDataValue', DoubleField(field_number=2, optional=True)) ControlPointFileEntryV0002.PointLogData.add_field( 'boolDataType', Int32Field(field_number=3, optional=True)) ControlPointFileEntryV0002.PointLogData.add_field( 'boolDataValue', BoolField(field_number=4, optional=True)) ControlPointFileEntryV0002.Measure.MeasureLogData.add_field( 'doubleDataType', Int32Field(field_number=1, optional=True)) ControlPointFileEntryV0002.Measure.MeasureLogData.add_field( 'doubleDataValue', DoubleField(field_number=2, optional=True)) ControlPointFileEntryV0002.Measure.MeasureLogData.add_field( 'boolDataType', Int32Field(field_number=3, optional=True)) ControlPointFileEntryV0002.Measure.MeasureLogData.add_field( 'boolDataValue', BoolField(field_number=4, optional=True)) ControlPointFileEntryV0002.Measure.add_field( 'serialnumber', StringField(field_number=1, required=True)) ControlPointFileEntryV0002.Measure.add_field( 'type', EnumField(field_number=2, required=True, enum_cls=ControlPointFileEntryV0002.Measure.MeasureType))