diff --git a/dot/parachain/availability-store/availabilitystore.go b/dot/parachain/availability-store/availabilitystore.go index a4f2927a15..91cfc1a7d9 100644 --- a/dot/parachain/availability-store/availabilitystore.go +++ b/dot/parachain/availability-store/availabilitystore.go @@ -5,7 +5,7 @@ package availability_store import ( "context" - "fmt" + "github.com/ChainSafe/gossamer/internal/log" ) @@ -24,18 +24,61 @@ type AvailabilityStoreSubsystem struct { func (av *AvailabilityStoreSubsystem) Run(ctx context.Context, OverseerToSubsystem chan any, SubsystemToOverseer chan any) error { av.processMessages() + return nil } func (av *AvailabilityStoreSubsystem) processMessages() { for msg := range av.OverseerToSubSystem { - switch msg.(type) { + logger.Debugf("received message %v", msg) + switch msg := msg.(type) { case QueryAvailableData: - av.handleQueryAvailableData(msg.(QueryAvailableData)) + av.handleQueryAvailableData(msg) + case QueryDataAvailability: + av.handleQueryDataAvailability(msg) + case QueryChunk: + av.handleQueryChunk(msg) + case QueryChunkSize: + av.handleQueryChunkSize(msg) + case QueryAllChunks: + av.handleQueryAllChunks(msg) + case QueryChunkAvailability: + av.handleQueryChunkAvailability(msg) + case StoreChunk: + av.handleStoreChunk(msg) + case StoreAvailableData: + av.handleStoreAvailableData(msg) } } - fmt.Printf("AvailabilityStore: Got message %v\n", msg) } func (av *AvailabilityStoreSubsystem) handleQueryAvailableData(msg QueryAvailableData) { // TODO: handle query available data } + +func (av *AvailabilityStoreSubsystem) handleQueryDataAvailability(msg QueryDataAvailability) { + // TODO: handle query data availability +} + +func (av *AvailabilityStoreSubsystem) handleQueryChunk(msg QueryChunk) { + // TODO: handle query chunk +} + +func (av *AvailabilityStoreSubsystem) handleQueryChunkSize(msg QueryChunkSize) { + // TODO: handle query chunk size +} + +func (av *AvailabilityStoreSubsystem) handleQueryAllChunks(msg QueryAllChunks) { + // TODO: handle query all chunks +} + +func (av *AvailabilityStoreSubsystem) handleQueryChunkAvailability(msg QueryChunkAvailability) { + // TODO: handle query chunk availability +} + +func (av *AvailabilityStoreSubsystem) handleStoreChunk(msg StoreChunk) { + // TODO: handle store chunk +} + +func (av *AvailabilityStoreSubsystem) handleStoreAvailableData(msg StoreAvailableData) { + // TODO: handle store available data +} diff --git a/dot/parachain/availability-store/messages.go b/dot/parachain/availability-store/messages.go index 33919139b3..888a6675ba 100644 --- a/dot/parachain/availability-store/messages.go +++ b/dot/parachain/availability-store/messages.go @@ -22,9 +22,79 @@ func (QueryAvailableData) Index() uint { return 0 } +type QueryDataAvailability struct { + CandidateHash common.Hash + // TDDO: add oneshot sender +} + +func (QueryDataAvailability) Index() uint { + return 1 +} + +type QueryChunk struct { + CandidateHash common.Hash + ValidatorIndex uint32 + // TODO: add oneshot sender +} + +func (QueryChunk) Index() uint { + return 2 +} + +type QueryChunkSize struct { + CandidateHash common.Hash + // TODO: add oneshot sender +} + +func (QueryChunkSize) Index() uint { + return 3 +} + +type QueryAllChunks struct { + CandidateHash common.Hash + // TODO: add oneshot sender +} + +func (QueryAllChunks) Index() uint { + return 4 +} + +type QueryChunkAvailability struct { + CandidateHash common.Hash + ValidatorIndex uint32 + // TODO: add oneshot sender +} + +func (QueryChunkAvailability) Index() uint { + return 5 +} + +type StoreChunk struct { + CandidateHash common.Hash + Chunk []byte + // TODO: add oneshot sender +} + +func (StoreChunk) Index() uint { + return 6 +} + +type StoreAvailableData struct { + CandidateHash common.Hash + NValidators uint32 + AvailableData AvailableData + ExpectedErasureRoot common.Hash + // TODO: add oneshot sender +} + +func (StoreAvailableData) Index() uint { + return 7 +} + // NewCollationFetchingResponse returns a new collation fetching response varying data type func NewAvailabilityStoreMessage() AvailabilityStoreMessage { - vdt := scale.MustNewVaryingDataType(QueryAvailableData{}) + vdt := scale.MustNewVaryingDataType(QueryAvailableData{}, QueryDataAvailability{}, QueryChunk{}, + QueryChunkSize{}, QueryAllChunks{}, QueryChunkAvailability{}, StoreChunk{}, StoreAvailableData{}) return AvailabilityStoreMessage(vdt) }