X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/5a93b6124068c2a8748fc0bfbb2a2d151815bcf0..80e348724041a694002fc38f57e8868b9b9a2be9:/subagent.go diff --git a/subagent.go b/subagent.go index 4cb6381..035f57d 100644 --- a/subagent.go +++ b/subagent.go @@ -23,19 +23,6 @@ const ( subagentNameDraws = 1000 ) -// newSubagents returns the subagents in dir, one directory for each name. The -// clock gives the dates of their messages, and draw gives the names of new -// subagents. -func newSubagents(dir string, clock func() time.Time, draw func() string) *Subagents { - return &Subagents{ - dir: dir, - clock: clock, - draw: draw, - open: make(map[string]*Subagent), - reserved: make(map[string]bool), - } -} - // Subagents holds the subagents of one agent. Each subagent has a directory // named for it, which holds its log. A log takes an exclusive lock, so // Subagents opens the log of a name once and keeps it open until Close. Its @@ -50,6 +37,30 @@ type Subagents struct { reserved map[string]bool } +// Subagent is one subagent, its directory, and its log. Its mutex protects the +// log, because the run of the subagent writes it while the agent reads it with +// zoom. +type Subagent struct { + name string + dir string + mutex sync.Mutex + log *Log + syncer *Syncer +} + +// newSubagents returns the subagents in dir, one directory for each name. The +// clock gives the dates of their messages, and draw gives the names of new +// subagents. +func newSubagents(dir string, clock func() time.Time, draw func() string) *Subagents { + return &Subagents{ + dir: dir, + clock: clock, + draw: draw, + open: make(map[string]*Subagent), + reserved: make(map[string]bool), + } +} + // Create makes the directory and the log of a new subagent. It draws a name // again when the directory of the name exists. func (s *Subagents) Create(ctx context.Context) (*Subagent, error) { @@ -208,17 +219,6 @@ func (s *Subagents) Close() error { return err } -// Subagent is one subagent, its directory, and its log. Its mutex protects the -// log, because the run of the subagent writes it while the agent reads it with -// zoom. -type Subagent struct { - name string - dir string - mutex sync.Mutex - log *Log - syncer *Syncer -} - // Append logs a message of the subagent. func (a *Subagent) Append(kind, text string) (Message, error) { a.mutex.Lock()