Documentation
¶
Overview ¶
Package meeting provides a way for one thread of control to wait for information provided by another thread.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // Clock holds the clock implementation used by the meeting package. // This is exported so it can be changed for testing purposes. Clock clock.Clock = clock.WallClock )
Functions ¶
This section is empty.
Types ¶
type Metrics ¶
type Metrics interface {
// RequestCompleted is called every time an HTTP
// request has completed with the time the request started.
RequestCompleted(startTime time.Time)
// RequestsExpired is called when some requests
// have been garbage collected with the number
// of GC'd requests.
RequestsExpired(count int)
}
Metrics represents a way to report metrics information about the meeting service. It must be callable concurrently.
type Params ¶
type Params struct {
// Store is used for storage of persistent data.
Store Store
// Metrics holds an object that's used to report server metrics.
// If it's nil, no metrics will be reported.
Metrics Metrics
// ListenAddr holds the host name to listen on. This
// should not have a port number.
// Note that ListenAddr must also be sufficient for other
// servers to use to contact this one.
ListenAddr string
// DisableGC holds whether the garbage collector is disabled.
DisableGC bool
// WaitTimeout holds the maximum time to that
// wait requests will wait. If it is zero, a default
// duration will be used.
WaitTimeout time.Duration
// ExpiryDuration holds the maximum amount of time
// a rendezvous will be kept around for. If it is zero, a default
// duration will be used.
ExpiryDuration time.Duration
}
Params holds parameters for the NewServer function.
type Place ¶
type Place struct {
// contains filtered or unexported fields
}
Place represents a rendezvous place.
func (*Place) Done ¶
Done marks the rendezvous with the given id as complete, and provides it with the given data which will be returned from Wait.
func (*Place) NewRendezvous ¶
NewRendezvous creates a new rendezvous holding the given data. The rendezvous id is returned.
type Store ¶
type Store interface {
// Context returns a context that is suitable for passing to the
// other store methods. Store methods called with such a context
// will be sequentially consistent; for example, a value that is
// Put will immediately be available from a Get method.
//
// The returned close function must be called when the returned
// context will no longer be used, to allow for any required
// cleanup.
Context(ctx context.Context) (_ context.Context, close func())
// Put associates an address with the given id.
Put(ctx context.Context, id, address string) error
// Get returns the address associated with the given id
// and removes the association.
Get(ctx context.Context, id string) (address string, err error)
// Remove removes the entry with the given id.
// It should not return an error if the entry has already
// been removed.
Remove(ctx context.Context, id string) (time.Time, error)
// RemoveOld removes entries with the given address that were created
// earlier than the given time. It returns any ids removed.
// If it encountered an error while deleting the ids, it
// may return a non-empty ids slice and a non-nil error.
RemoveOld(ctx context.Context, address string, olderThan time.Time) (ids []string, err error)
}
Store defines the backing store required by the participants in the rendezvous. Entries created in the store should be visible to all participants.