Sfoglia il codice sorgente

Fix some notes and add some comments.

tags/v0.9.2-beta
Daniel Oaks 6 anni fa
parent
commit
eac6a69782
5 ha cambiato i file con 36 aggiunte e 16 eliminazioni
  1. 10
    2
      irc/client_lookup_set.go
  2. 2
    2
      irc/database.go
  3. 8
    5
      irc/monitor.go
  4. 1
    0
      irc/server.go
  5. 15
    7
      irc/types.go

+ 10
- 2
irc/client_lookup_set.go Vedi File

@@ -224,17 +224,21 @@ func (clients *ClientLookupSet) Find(userhost string) *Client {
224 224
 
225 225
 //TODO(dan): move this over to generally using glob syntax instead?
226 226
 // kinda more expected in normal ban/etc masks, though regex is useful (probably as an extban?)
227
+
228
+// UserMaskSet holds a set of client masks and lets you match  hostnames to them.
227 229
 type UserMaskSet struct {
228 230
 	masks  map[string]bool
229 231
 	regexp *regexp.Regexp
230 232
 }
231 233
 
234
+// NewUserMaskSet returns a new UserMaskSet.
232 235
 func NewUserMaskSet() *UserMaskSet {
233 236
 	return &UserMaskSet{
234 237
 		masks: make(map[string]bool),
235 238
 	}
236 239
 }
237 240
 
241
+// Add adds the given mask to this set.
238 242
 func (set *UserMaskSet) Add(mask string) bool {
239 243
 	casefoldedMask, err := Casefold(mask)
240 244
 	if err != nil {
@@ -249,6 +253,7 @@ func (set *UserMaskSet) Add(mask string) bool {
249 253
 	return true
250 254
 }
251 255
 
256
+// AddAll adds the given masks to this set.
252 257
 func (set *UserMaskSet) AddAll(masks []string) (added bool) {
253 258
 	for _, mask := range masks {
254 259
 		if !added && !set.masks[mask] {
@@ -260,6 +265,7 @@ func (set *UserMaskSet) AddAll(masks []string) (added bool) {
260 265
 	return
261 266
 }
262 267
 
268
+// Remove removes the given mask from this set.
263 269
 func (set *UserMaskSet) Remove(mask string) bool {
264 270
 	if !set.masks[mask] {
265 271
 		return false
@@ -269,6 +275,7 @@ func (set *UserMaskSet) Remove(mask string) bool {
269 275
 	return true
270 276
 }
271 277
 
278
+// Match matches the given n!u@h.
272 279
 func (set *UserMaskSet) Match(userhost string) bool {
273 280
 	if set.regexp == nil {
274 281
 		return false
@@ -276,17 +283,18 @@ func (set *UserMaskSet) Match(userhost string) bool {
276 283
 	return set.regexp.MatchString(userhost)
277 284
 }
278 285
 
286
+// String returns the masks in this set.
279 287
 func (set *UserMaskSet) String() string {
280 288
 	masks := make([]string, len(set.masks))
281 289
 	index := 0
282 290
 	for mask := range set.masks {
283 291
 		masks[index] = mask
284
-		index += 1
292
+		index++
285 293
 	}
286 294
 	return strings.Join(masks, " ")
287 295
 }
288 296
 
289
-// Generate a regular expression from the set of user mask
297
+// setRegexp generates a regular expression from the set of user mask
290 298
 // strings. Masks are split at the two types of wildcards, `*` and
291 299
 // `?`. All the pieces are meta-escaped. `*` is replaced with `.*`,
292 300
 // the regexp equivalent. Likewise, `?` is replaced with `.`. The

+ 2
- 2
irc/database.go Vedi File

@@ -53,7 +53,7 @@ func InitDB(path string) {
53 53
 	}
54 54
 }
55 55
 
56
-// open an existing database, performing a schema version check
56
+// OpenDatabase returns an existing database, performing a schema version check.
57 57
 func OpenDatabase(path string) (*buntdb.DB, error) {
58 58
 	// open data store
59 59
 	db, err := buntdb.Open(path)
@@ -65,7 +65,7 @@ func OpenDatabase(path string) (*buntdb.DB, error) {
65 65
 	err = db.View(func(tx *buntdb.Tx) error {
66 66
 		version, _ := tx.Get(keySchemaVersion)
67 67
 		if version != latestDbSchema {
68
-			return fmt.Errorf("Database must be updated. Expected schema v%s, got v%s.", latestDbSchema, version)
68
+			return fmt.Errorf("Database must be updated. Expected schema v%s, got v%s", latestDbSchema, version)
69 69
 		}
70 70
 		return nil
71 71
 	})

+ 8
- 5
irc/monitor.go Vedi File

@@ -12,6 +12,7 @@ import (
12 12
 	"github.com/goshuirc/irc-go/ircmsg"
13 13
 )
14 14
 
15
+// MonitorManager keeps track of who's monitoring which nicks.
15 16
 type MonitorManager struct {
16 17
 	sync.RWMutex
17 18
 	// client -> nicks it's watching
@@ -21,6 +22,7 @@ type MonitorManager struct {
21 22
 	// (all nicks must be normalized externally by casefolding)
22 23
 }
23 24
 
25
+// NewMonitorManager returns a new MonitorManager.
24 26
 func NewMonitorManager() *MonitorManager {
25 27
 	mm := MonitorManager{
26 28
 		watching:  make(map[*Client]map[string]bool),
@@ -29,7 +31,8 @@ func NewMonitorManager() *MonitorManager {
29 31
 	return &mm
30 32
 }
31 33
 
32
-var MonitorLimitExceeded = errors.New("Monitor limit exceeded")
34
+// ErrMonitorLimitExceeded is used when the monitor list exceeds our limit.
35
+var ErrMonitorLimitExceeded = errors.New("Monitor limit exceeded")
33 36
 
34 37
 // AlertAbout alerts everyone monitoring `client`'s nick that `client` is now {on,off}line.
35 38
 func (manager *MonitorManager) AlertAbout(client *Client, online bool) {
@@ -69,7 +72,7 @@ func (manager *MonitorManager) Add(client *Client, nick string, limit int) error
69 72
 	}
70 73
 
71 74
 	if len(manager.watching[client]) >= limit {
72
-		return MonitorLimitExceeded
75
+		return ErrMonitorLimitExceeded
73 76
 	}
74 77
 
75 78
 	manager.watching[client][nick] = true
@@ -92,7 +95,7 @@ func (manager *MonitorManager) RemoveAll(client *Client) {
92 95
 	manager.Lock()
93 96
 	defer manager.Unlock()
94 97
 
95
-	for nick, _ := range manager.watching[client] {
98
+	for nick := range manager.watching[client] {
96 99
 		delete(manager.watchedby[nick], client)
97 100
 	}
98 101
 	delete(manager.watching, client)
@@ -172,7 +175,7 @@ func monitorAddHandler(server *Server, client *Client, msg ircmsg.IrcMessage) bo
172 175
 		}
173 176
 
174 177
 		err = server.monitorManager.Add(client, casefoldedTarget, limit)
175
-		if err == MonitorLimitExceeded {
178
+		if err == ErrMonitorLimitExceeded {
176 179
 			client.Send(nil, server.name, ERR_MONLISTFULL, client.getNick(), strconv.Itoa(server.limits.MonitorEntries), strings.Join(targets, ","))
177 180
 			break
178 181
 		} else if err != nil {
@@ -206,7 +209,7 @@ func monitorListHandler(server *Server, client *Client, msg ircmsg.IrcMessage) b
206 209
 	monitorList := server.monitorManager.List(client)
207 210
 
208 211
 	var nickList []string
209
-	for _, cfnick := range(monitorList) {
212
+	for _, cfnick := range monitorList {
210 213
 		replynick := cfnick
211 214
 		// report the uncasefolded nick if it's available, i.e., the client is online
212 215
 		if mclient := server.clients.Get(cfnick); mclient != nil {

+ 1
- 0
irc/server.go Vedi File

@@ -1592,6 +1592,7 @@ func (server *Server) setupListeners(config *Config) {
1592 1592
 	}
1593 1593
 }
1594 1594
 
1595
+// GetDefaultChannelModes returns our default channel modes.
1595 1596
 func (server *Server) GetDefaultChannelModes() Modes {
1596 1597
 	server.configurableStateMutex.RLock()
1597 1598
 	defer server.configurableStateMutex.RUnlock()

+ 15
- 7
irc/types.go Vedi File

@@ -64,8 +64,10 @@ func (channels *ChannelNameMap) Len() int {
64 64
 	return len(channels.Chans)
65 65
 }
66 66
 
67
+// ModeSet holds a set of modes.
67 68
 type ModeSet map[Mode]bool
68 69
 
70
+// String returns the modes in this set.
69 71
 func (set ModeSet) String() string {
70 72
 	if len(set) == 0 {
71 73
 		return ""
@@ -79,35 +81,44 @@ func (set ModeSet) String() string {
79 81
 	return strings.Join(strs, "")
80 82
 }
81 83
 
84
+// ClientSet is a set of clients.
82 85
 type ClientSet map[*Client]bool
83 86
 
87
+// Add adds the given client to this set.
84 88
 func (clients ClientSet) Add(client *Client) {
85 89
 	clients[client] = true
86 90
 }
87 91
 
92
+// Remove removes the given client from this set.
88 93
 func (clients ClientSet) Remove(client *Client) {
89 94
 	delete(clients, client)
90 95
 }
91 96
 
97
+// Has returns true if the given client is in this set.
92 98
 func (clients ClientSet) Has(client *Client) bool {
93 99
 	return clients[client]
94 100
 }
95 101
 
102
+// MemberSet is a set of members with modes.
96 103
 type MemberSet map[*Client]ModeSet
97 104
 
105
+// Add adds the given client to this set.
98 106
 func (members MemberSet) Add(member *Client) {
99 107
 	members[member] = make(ModeSet)
100 108
 }
101 109
 
110
+// Remove removes the given client from this set.
102 111
 func (members MemberSet) Remove(member *Client) {
103 112
 	delete(members, member)
104 113
 }
105 114
 
115
+// Has returns true if the given client is in this set.
106 116
 func (members MemberSet) Has(member *Client) bool {
107 117
 	_, ok := members[member]
108 118
 	return ok
109 119
 }
110 120
 
121
+// HasMode returns true if the given client is in this set with the given mode.
111 122
 func (members MemberSet) HasMode(member *Client, mode Mode) bool {
112 123
 	modes, ok := members[member]
113 124
 	if !ok {
@@ -116,6 +127,7 @@ func (members MemberSet) HasMode(member *Client, mode Mode) bool {
116 127
 	return modes[mode]
117 128
 }
118 129
 
130
+// AnyHasMode returns true if any of our clients has the given mode.
119 131
 func (members MemberSet) AnyHasMode(mode Mode) bool {
120 132
 	for _, modes := range members {
121 133
 		if modes[mode] {
@@ -125,19 +137,15 @@ func (members MemberSet) AnyHasMode(mode Mode) bool {
125 137
 	return false
126 138
 }
127 139
 
140
+// ChannelSet is a set of channels.
128 141
 type ChannelSet map[*Channel]bool
129 142
 
143
+// Add adds the given channel to this set.
130 144
 func (channels ChannelSet) Add(channel *Channel) {
131 145
 	channels[channel] = true
132 146
 }
133 147
 
148
+// Remove removes the given channel from this set.
134 149
 func (channels ChannelSet) Remove(channel *Channel) {
135 150
 	delete(channels, channel)
136 151
 }
137
-
138
-func (channels ChannelSet) First() *Channel {
139
-	for channel := range channels {
140
-		return channel
141
-	}
142
-	return nil
143
-}

Loading…
Annulla
Salva