swisspost-evoting-go-poc/pkg/party/phases.go

56 lines
1.6 KiB
Go
Raw Normal View History

package party
import (
"fmt"
"github.com/user/evote/pkg/transport"
)
// Phase message handlers. These are filled in incrementally (setup, then
// voting, then tally). Until a phase is implemented its handler rejects unknown
// message types cleanly rather than panicking — the transport boundary must
// never crash on an unexpected message.
func (p *SetupComponent) handleSetupMsg(env *transport.Envelope) (*transport.Envelope, error) {
return nil, fmt.Errorf("%s: unhandled message type %q", p.id.Name, env.Type)
}
func (p *ControlComponent) handleCCMsg(env *transport.Envelope) (*transport.Envelope, error) {
switch env.Type {
case MsgGenCCKeys:
return p.handleGenCCKeys(env)
case MsgLongCodeShareReq:
return p.handleLongCodeShare(env)
case MsgVerifyBallot:
return p.handleVerifyBallot(env)
case MsgShuffle:
return p.handleShuffle(env)
default:
return nil, fmt.Errorf("%s: unhandled message type %q", p.id.Name, env.Type)
}
}
func (p *ElectoralBoard) handleEBMsg(env *transport.Envelope) (*transport.Envelope, error) {
switch env.Type {
case MsgGenEBKey:
return p.handleGenEBKey(env)
case MsgFinalMix:
return p.handleFinalMix(env)
default:
return nil, fmt.Errorf("%s: unhandled message type %q", p.id.Name, env.Type)
}
}
func (p *VotingServer) handleServerMsg(env *transport.Envelope) (*transport.Envelope, error) {
switch env.Type {
case MsgMappingTable:
return p.handleMappingTable(env)
case MsgCastBallot:
return p.handleCastBallot(env)
case MsgStartTally:
return p.handleStartTally(env)
default:
return nil, fmt.Errorf("%s: unhandled message type %q", p.id.Name, env.Type)
}
}