[PHASE-5] Move requests to separate file and implement decoding
This commit is contained in:
parent
c7b930c935
commit
c147bc7fe4
35
internal/protocol/requests.go
Normal file
35
internal/protocol/requests.go
Normal 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)
|
||||
}
|
||||
Loading…
Reference in a new issue