53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package tokenboard
|
|
|
|
import (
|
|
"git.openprivacy.ca/cwtch.im/tapir/primitives/auditable"
|
|
"git.openprivacy.ca/cwtch.im/tapir/primitives/privacypass"
|
|
)
|
|
|
|
// AppHandler allows clients to react to specific events.
|
|
type AppHandler interface {
|
|
HandleNewMessages(previousLastCommit []byte)
|
|
}
|
|
|
|
// MessageType defines the enum for TokenBoard messages
|
|
type messageType int
|
|
|
|
const (
|
|
replayRequestMessage messageType = iota
|
|
replayResultMessage
|
|
postRequestMessage
|
|
postResultMessage
|
|
)
|
|
|
|
// Message encapsulates the application protocol
|
|
type Message struct {
|
|
MessageType messageType
|
|
PostRequest postRequest `json:",omitempty"`
|
|
PostResult postResult `json:",omitempty"`
|
|
ReplayRequest replayRequest `json:",omitempty"`
|
|
ReplayResult replayResult `json:",omitempty"`
|
|
}
|
|
|
|
// ReplayRequest requests a reply from the given Commit
|
|
type replayRequest struct {
|
|
LastCommit []byte
|
|
}
|
|
|
|
// PostRequest requests to post the message to the board with the given token
|
|
type postRequest struct {
|
|
Token privacypass.SpentToken
|
|
Message auditable.Message
|
|
}
|
|
|
|
// PostResult returns the success of a given post attempt
|
|
type postResult struct {
|
|
Success bool
|
|
Proof auditable.SignedProof
|
|
}
|
|
|
|
// ReplayResult is sent by the server before a stream of replayed messages
|
|
type replayResult struct {
|
|
NumMessages int
|
|
}
|