hash-of-wisdom/internal/protocol/requests.go

36 lines
863 B
Go

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)
}