35 lines
826 B
Go
35 lines
826 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
|
|
IsKnown(string) bool
|
|
Close()
|
|
}
|
|
|
|
// Host abstracts a remote node capable of proxying cart requests.
|
|
type Host interface {
|
|
AnnounceExpiry(ids []uint64)
|
|
Negotiate(otherHosts []string) ([]string, error)
|
|
Name() string
|
|
Proxy(id uint64, w http.ResponseWriter, r *http.Request) (bool, error)
|
|
GetActorIds() []uint64
|
|
Close() error
|
|
Ping() bool
|
|
IsHealthy() bool
|
|
AnnounceOwnership(ids []uint64)
|
|
}
|