Add cleaning for links
This commit is contained in:
parent
718362a2d7
commit
c37430c371
|
@ -12,9 +12,14 @@ type UserLink struct {
|
|||
UserID uint16
|
||||
}
|
||||
|
||||
type LinkArray struct {
|
||||
Array []string
|
||||
}
|
||||
|
||||
type LinkCenter struct {
|
||||
Links map[string]*UserLink
|
||||
Mu sync.Mutex
|
||||
Links map[string]*UserLink
|
||||
SavedLinks map[uint16]*LinkArray
|
||||
Mu sync.Mutex
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -35,7 +40,18 @@ func (l *LinkCenter) AddLink(id uint16, link com.Link) error {
|
|||
LeftNum: link.UseCount,
|
||||
UserID: id,
|
||||
}
|
||||
val, found := l.SavedLinks[id]
|
||||
if !found {
|
||||
var tmpAr []string
|
||||
tmpAr = append(tmpAr, string(link.Data))
|
||||
l.SavedLinks[id] = &LinkArray{
|
||||
Array: tmpAr,
|
||||
}
|
||||
} else {
|
||||
val.Array = append(val.Array, string(link.Data))
|
||||
}
|
||||
log.Printf("Added link by %s\n", string(link.Data))
|
||||
log.Printf("SavedLinks[%d] is now %v\n", id, l.SavedLinks[id])
|
||||
l.Mu.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
@ -58,9 +74,26 @@ func (l *LinkCenter) DeleteLink(data []byte) error {
|
|||
}
|
||||
|
||||
func (l *LinkCenter) GetLink(data []byte) (*UserLink, error) {
|
||||
l.Mu.Lock()
|
||||
l.Mu.Unlock()
|
||||
val, found := l.Links[string(data)]
|
||||
if !found {
|
||||
return nil, ERROR_DONT_HAVE
|
||||
}
|
||||
return val, nil
|
||||
}
|
||||
|
||||
func (l *LinkCenter) CleanAfterLeave(id uint16) {
|
||||
log.Printf("Cleaning after id=%d left;\n", id)
|
||||
ar, found := l.SavedLinks[id]
|
||||
if !found {
|
||||
log.Printf("Cleaning: Id=%d not found;\n", id)
|
||||
return
|
||||
}
|
||||
l.Mu.Lock()
|
||||
for _, link := range ar.Array {
|
||||
log.Printf("Cleaning: Id=%d deleting %s;\n", id, link)
|
||||
delete(l.Links, link)
|
||||
}
|
||||
l.Mu.Unlock()
|
||||
}
|
||||
|
|
|
@ -163,5 +163,6 @@ func handleClient(conn net.Conn) {
|
|||
log.Println("server: conn: closed")
|
||||
if isRegistered {
|
||||
userCenter.DeleteIfHaveOne(registeredID)
|
||||
linkCenter.CleanAfterLeave(registeredID)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user