Reusable types in dispersal.proto

This commit is contained in:
Gusto 2024-07-11 13:34:30 +03:00
parent dc1fa97fa3
commit a72dab131a
No known key found for this signature in database
5 changed files with 92 additions and 24 deletions

9
da/executor/README.md Normal file
View File

@ -0,0 +1,9 @@
# Zone Executor to Nomos DA communication
## Protobuf
To generate the updated protobuf serializer from `dispersal.proto` run:
``` bash
protoc --python_out=. dispersal.proto
```

View File

@ -2,22 +2,52 @@ syntax = "proto3";
package dispersal;
message DispersalReq {
message Blob {
bytes blob_id = 1;
bytes data = 2;
}
message BlobId {
bytes blob_id = 1;
}
message Error {
string description = 1;
}
message DispersalErr {
oneof message_type {
Error chunk_size_err = 1;
Error verification_err = 2;
}
}
message DispersalReq {
Blob blob = 1;
}
message DispersalRes {
int32 blob_id = 1;
oneof message_type {
BlobId blob_id = 1;
DispersalErr err = 2;
}
}
message SampleErr {
oneof message_type {
Error not_found = 1;
}
}
message SampleReq {
int32 blob_id = 1;
BlobId blob_id = 1;
}
message SampleRes {
int32 blob_id = 1;
bytes data = 2;
oneof message_type {
Blob blob = 1;
SampleErr err = 2;
}
}
message DispersalMessage {
@ -28,4 +58,3 @@ message DispersalMessage {
SampleRes sample_res = 4;
}
}

View File

@ -24,21 +24,31 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0f\x64ispersal.proto\x12\tdispersal\"-\n\x0c\x44ispersalReq\x12\x0f\n\x07\x62lob_id\x18\x01 \x01(\x0c\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x1f\n\x0c\x44ispersalRes\x12\x0f\n\x07\x62lob_id\x18\x01 \x01(\x05\"\x1c\n\tSampleReq\x12\x0f\n\x07\x62lob_id\x18\x01 \x01(\x05\"*\n\tSampleRes\x12\x0f\n\x07\x62lob_id\x18\x01 \x01(\x05\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\xde\x01\n\x10\x44ispersalMessage\x12\x30\n\rdispersal_req\x18\x01 \x01(\x0b\x32\x17.dispersal.DispersalReqH\x00\x12\x30\n\rdispersal_res\x18\x02 \x01(\x0b\x32\x17.dispersal.DispersalResH\x00\x12*\n\nsample_req\x18\x03 \x01(\x0b\x32\x14.dispersal.SampleReqH\x00\x12*\n\nsample_res\x18\x04 \x01(\x0b\x32\x14.dispersal.SampleResH\x00\x42\x0e\n\x0cmessage_typeb\x06proto3')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0f\x64ispersal.proto\x12\tdispersal\"%\n\x04\x42lob\x12\x0f\n\x07\x62lob_id\x18\x01 \x01(\x0c\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\x19\n\x06\x42lobId\x12\x0f\n\x07\x62lob_id\x18\x01 \x01(\x0c\"\x1c\n\x05\x45rror\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\"x\n\x0c\x44ispersalErr\x12*\n\x0e\x63hunk_size_err\x18\x01 \x01(\x0b\x32\x10.dispersal.ErrorH\x00\x12,\n\x10verification_err\x18\x02 \x01(\x0b\x32\x10.dispersal.ErrorH\x00\x42\x0e\n\x0cmessage_type\"-\n\x0c\x44ispersalReq\x12\x1d\n\x04\x62lob\x18\x01 \x01(\x0b\x32\x0f.dispersal.Blob\"l\n\x0c\x44ispersalRes\x12$\n\x07\x62lob_id\x18\x01 \x01(\x0b\x32\x11.dispersal.BlobIdH\x00\x12&\n\x03\x65rr\x18\x02 \x01(\x0b\x32\x17.dispersal.DispersalErrH\x00\x42\x0e\n\x0cmessage_type\"B\n\tSampleErr\x12%\n\tnot_found\x18\x01 \x01(\x0b\x32\x10.dispersal.ErrorH\x00\x42\x0e\n\x0cmessage_type\"/\n\tSampleReq\x12\"\n\x07\x62lob_id\x18\x01 \x01(\x0b\x32\x11.dispersal.BlobId\"a\n\tSampleRes\x12\x1f\n\x04\x62lob\x18\x01 \x01(\x0b\x32\x0f.dispersal.BlobH\x00\x12#\n\x03\x65rr\x18\x02 \x01(\x0b\x32\x14.dispersal.SampleErrH\x00\x42\x0e\n\x0cmessage_type\"\xde\x01\n\x10\x44ispersalMessage\x12\x30\n\rdispersal_req\x18\x01 \x01(\x0b\x32\x17.dispersal.DispersalReqH\x00\x12\x30\n\rdispersal_res\x18\x02 \x01(\x0b\x32\x17.dispersal.DispersalResH\x00\x12*\n\nsample_req\x18\x03 \x01(\x0b\x32\x14.dispersal.SampleReqH\x00\x12*\n\nsample_res\x18\x04 \x01(\x0b\x32\x14.dispersal.SampleResH\x00\x42\x0e\n\x0cmessage_typeb\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'dispersal_pb2', _globals)
if not _descriptor._USE_C_DESCRIPTORS:
DESCRIPTOR._loaded_options = None
_globals['_DISPERSALREQ']._serialized_start=30
_globals['_DISPERSALREQ']._serialized_end=75
_globals['_DISPERSALRES']._serialized_start=77
_globals['_DISPERSALRES']._serialized_end=108
_globals['_SAMPLEREQ']._serialized_start=110
_globals['_SAMPLEREQ']._serialized_end=138
_globals['_SAMPLERES']._serialized_start=140
_globals['_SAMPLERES']._serialized_end=182
_globals['_DISPERSALMESSAGE']._serialized_start=185
_globals['_DISPERSALMESSAGE']._serialized_end=407
_globals['_BLOB']._serialized_start=30
_globals['_BLOB']._serialized_end=67
_globals['_BLOBID']._serialized_start=69
_globals['_BLOBID']._serialized_end=94
_globals['_ERROR']._serialized_start=96
_globals['_ERROR']._serialized_end=124
_globals['_DISPERSALERR']._serialized_start=126
_globals['_DISPERSALERR']._serialized_end=246
_globals['_DISPERSALREQ']._serialized_start=248
_globals['_DISPERSALREQ']._serialized_end=293
_globals['_DISPERSALRES']._serialized_start=295
_globals['_DISPERSALRES']._serialized_end=403
_globals['_SAMPLEERR']._serialized_start=405
_globals['_SAMPLEERR']._serialized_end=471
_globals['_SAMPLEREQ']._serialized_start=473
_globals['_SAMPLEREQ']._serialized_end=520
_globals['_SAMPLERES']._serialized_start=522
_globals['_SAMPLERES']._serialized_end=619
_globals['_DISPERSALMESSAGE']._serialized_start=622
_globals['_DISPERSALMESSAGE']._serialized_end=844
# @@protoc_insertion_point(module_scope)

View File

@ -26,7 +26,7 @@ class Node:
async def _handle(self, conn_id, writer, message):
if message.HasField('dispersal_req'):
print(f"Received DispersalRes: blob_id={message.dispersal_req.blob_id}")
print(f"Received DispersalRes: blob_id={message.dispersal_req.blob.blob_id}")
elif message.HasField('sample_req'):
print(f"Received SampleRes: blob_id={message.sample_req.blob_id}")
else:

View File

@ -15,21 +15,41 @@ def unpack_message(data):
return message
def new_dispersal_req_msg(blob_id, data):
dispersal_req = dispersal_pb2.DispersalReq(blob_id=blob_id, data=data)
blob = dispersal_pb2.Blob(blob_id=blob_id, data=data)
dispersal_req = dispersal_pb2.DispersalReq(blob=blob)
dispersal_message = dispersal_pb2.DispersalMessage(dispersal_req=dispersal_req)
return pack_message(dispersal_message)
def new_dispersal_res_msg(blob_id):
dispersal_res = dispersal_pb2.DispersalRes(blob_id=blob_id)
def new_dispersal_res_msg(blob_id=None, error_type=None, error_description=None):
if blob_id is not None:
blob_id_msg = dispersal_pb2.BlobId(blob_id=blob_id)
dispersal_res = dispersal_pb2.DispersalRes(blob_id=blob_id_msg)
elif error_type is not None and error_description is not None:
error = dispersal_pb2.Error(description=error_description)
dispersal_err = dispersal_pb2.DispersalErr()
setattr(dispersal_err, error_type, error)
dispersal_res = dispersal_pb2.DispersalRes(err=dispersal_err)
else:
raise ValueError("Either blob_id or error_type and error_description must be provided")
dispersal_message = dispersal_pb2.DispersalMessage(dispersal_res=dispersal_res)
return pack_message(dispersal_message)
def new_sample_req_msg(blob_id):
sample_req = dispersal_pb2.SampleReq(blob_id=blob_id)
blob_id_msg = dispersal_pb2.BlobId(blob_id=blob_id)
sample_req = dispersal_pb2.SampleReq(blob_id=blob_id_msg)
dispersal_message = dispersal_pb2.DispersalMessage(sample_req=sample_req)
return pack_message(dispersal_message)
def new_sample_res_msg(blob_id, data):
sample_res = dispersal_pb2.SampleRes(blob_id=blob_id, data=data)
def new_sample_res_msg(blob_id=None, data=None, error_description=None):
if blob_id is not None and data is not None:
blob = dispersal_pb2.Blob(blob_id=blob_id, data=data)
sample_res = dispersal_pb2.SampleRes(blob=blob)
elif error_description is not None:
error = dispersal_pb2.Error(description=error_description)
sample_err = dispersal_pb2.SampleErr(not_found=error)
sample_res = dispersal_pb2.SampleRes(err=sample_err)
else:
raise ValueError("Either blob_id and data or error_description must be provided")
dispersal_message = dispersal_pb2.DispersalMessage(sample_res=sample_res)
return pack_message(dispersal_message)