Changeset 292 in code for trunk/irc.go
- Timestamp:
- May 11, 2020, 10:25:49 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/irc.go
r193 r292 177 177 } 178 178 179 func (m *membership) String() string { 180 if m == nil { 181 return "" 182 } 183 return string(m.Prefix) 179 // memberships always sorted by descending membership rank 180 type memberships []membership 181 182 func (m *memberships) Add(availableMemberships []membership, newMembership membership) { 183 l := *m 184 i := 0 185 for _, availableMembership := range availableMemberships { 186 if i >= len(l) { 187 break 188 } 189 if l[i] == availableMembership { 190 if availableMembership == newMembership { 191 // we already have this membership 192 return 193 } 194 i++ 195 continue 196 } 197 if availableMembership == newMembership { 198 break 199 } 200 } 201 // insert newMembership at i 202 l = append(l, membership{}) 203 copy(l[i+1:], l[i:]) 204 l[i] = newMembership 205 *m = l 206 } 207 208 func (m *memberships) Remove(oldMembership membership) { 209 l := *m 210 for i, currentMembership := range l { 211 if currentMembership == oldMembership { 212 *m = append(l[:i], l[i+1:]...) 213 return 214 } 215 } 216 } 217 218 func (m memberships) Format(dc *downstreamConn) string { 219 if !dc.caps["multi-prefix"] { 220 if len(m) == 0 { 221 return "" 222 } 223 return string(m[0].Prefix) 224 } 225 prefixes := make([]byte, len(m)) 226 for i, membership := range m { 227 prefixes[i] = membership.Prefix 228 } 229 return string(prefixes) 184 230 } 185 231
Note:
See TracChangeset
for help on using the changeset viewer.