26 lines
640 B
Go
26 lines
640 B
Go
package actor
|
|
|
|
import "net/http"
|
|
|
|
type GrainPool[V any] interface {
|
|
Apply(id uint64, mutation any) (V, error)
|
|
Get(id uint64) (V, error)
|
|
OwnerHost(id uint64) (Host, bool)
|
|
Hostname() string
|
|
TakeOwnership(id uint64)
|
|
HandleOwnershipChange(host string, ids []uint64) error
|
|
HandleRemoteExpiry(host string, ids []uint64) error
|
|
Negotiate(otherHosts []string)
|
|
GetLocalIds() []uint64
|
|
RemoveHost(host string)
|
|
IsHealthy() bool
|
|
Close()
|
|
}
|
|
|
|
// Host abstracts a remote node capable of proxying cart requests.
|
|
type Host interface {
|
|
Name() string
|
|
Proxy(id uint64, w http.ResponseWriter, r *http.Request) (bool, error)
|
|
GetActorIds() []uint64
|
|
}
|