diff options
author | Ben Morrison <ben@gbmor.dev> | 2019-05-13 04:27:31 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2019-05-13 04:27:31 -0400 |
commit | 8af4945c9841b23224c6f76460278f67947fd01e (patch) | |
tree | 87ed7244030e66d5afa0bf307d1b94f4c09b85eb /cache | |
parent | f06a2d6126bed22d38b506e1edc8822386a7cc33 (diff) | |
download | getwtxt-8af4945c9841b23224c6f76460278f67947fd01e.tar.gz |
separating cache into its own library
Diffstat (limited to 'cache')
-rw-r--r-- | cache/index.go | 20 | ||||
-rw-r--r-- | cache/types.go | 24 |
2 files changed, 44 insertions, 0 deletions
diff --git a/cache/index.go b/cache/index.go new file mode 100644 index 0000000..e0a3dd0 --- /dev/null +++ b/cache/index.go @@ -0,0 +1,20 @@ +package cache + +// NewUserIndex returns a new instance of a user index +func NewUserIndex() *UserIndex { + return &UserIndex{} +} + +// AddUser inserts a new user into the index. The *Data struct only contains the nickname.) +func (index UserIndex) AddUser(nick string, url string) { + imutex.Lock() + index[url] = &Data{nick: nick} + imutex.Unlock() +} + +// DelUser removes a user from the index completely. +func (index UserIndex) DelUser(url string) { + imutex.Lock() + delete(index, url) + imutex.Unlock() +} diff --git a/cache/types.go b/cache/types.go new file mode 100644 index 0000000..8f364d5 --- /dev/null +++ b/cache/types.go @@ -0,0 +1,24 @@ +package cache + +import ( + "sync" +) + +// Indexer allows for other uses of the Index functions +type Indexer interface { + AddUser(string, string) + DelUser(string) +} + +// UserIndex provides an index of users by URL +type UserIndex map[string]*Data + +// Data from user's twtxt.txt +type Data struct { + nick string + url string + status []string +} + +// Mutex to control access to the User Index +var imutex = sync.RWMutex{} |