[PHASE-5] Move requests to separate file and implement decoding

This commit is contained in:
Savely Krendelhoff 2025-08-23 12:16:43 +07:00
parent c7b930c935
commit c147bc7fe4
No known key found for this signature in database
GPG key ID: F70DFD34F40238DE

View file

@ -0,0 +1,35 @@
package protocol
import (
"encoding/json"
"io"
"hash-of-wisdom/internal/pow/challenge"
)
// ChallengeRequest is empty (no payload for challenge requests)
type ChallengeRequest struct{}
// Decode reads a challenge request from the payload stream
func (r *ChallengeRequest) Decode(stream io.Reader) error {
// Challenge requests have no payload to decode
return nil
}
// SolutionRequest contains the client's solution attempt
type SolutionRequest struct {
Challenge challenge.Challenge `json:"challenge"`
Nonce uint64 `json:"nonce"`
}
// Decode reads a solution request from the payload stream
func (r *SolutionRequest) Decode(stream io.Reader) error {
if stream == nil {
// json.NewDecoder panics on nil reader
return io.EOF
}
// Parse JSON directly from stream
decoder := json.NewDecoder(stream)
return decoder.Decode(r)
}