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.