From c46fe12b3cfd40ccb0270255ca76cbf603e039f7 Mon Sep 17 00:00:00 2001 From: leah Date: Fri, 13 Jun 2025 23:24:41 +0100 Subject: [PATCH] remove unnecessary bits --- irc/getters.go | 53 ++++++++++++++++++++----------------------------- irc/handlers.go | 4 ++-- irc/metadata.go | 2 +- 3 files changed, 24 insertions(+), 35 deletions(-) diff --git a/irc/getters.go b/irc/getters.go index 7b0d5f9a..29bc8413 100644 --- a/irc/getters.go +++ b/irc/getters.go @@ -798,10 +798,12 @@ func (channel *Channel) Settings() (result ChannelSettings) { } func (channel *Channel) SetSettings(settings ChannelSettings) { + defer channel.MarkDirty(IncludeSettings) + channel.stateMutex.Lock() + defer channel.stateMutex.Unlock() + channel.settings = settings - channel.stateMutex.Unlock() - channel.MarkDirty(IncludeSettings) } func (channel *Channel) setForward(forward string) { @@ -833,10 +835,6 @@ func (session *Session) isSubscribedTo(key string) bool { session.client.stateMutex.RLock() defer session.client.stateMutex.RUnlock() - if session.metadataSubscriptions == nil { - return false - } - return session.metadataSubscriptions.Has(key) } @@ -871,10 +869,6 @@ func (session *Session) UnsubscribeFrom(keys ...string) []string { var removed []string - if session.metadataSubscriptions == nil { - return []string{} - } - for k := range session.metadataSubscriptions { if slices.Contains(keys, k) { removed = append(removed, k) @@ -892,27 +886,28 @@ func (session *Session) MetadataSubscriptions() utils.HashSet[string] { return maps.Clone(session.metadataSubscriptions) } -func (channel *Channel) GetMetadata(key string) (string, error) { +func (channel *Channel) GetMetadata(key string) (string, bool) { channel.stateMutex.RLock() defer channel.stateMutex.RUnlock() val, ok := channel.metadata[key] if !ok { - return "", errMetadataNotFound + return "", false } - return val, nil + return val, true } func (channel *Channel) SetMetadata(key string, value string) { + defer channel.MarkDirty(IncludeAllAttrs) + channel.stateMutex.Lock() + defer channel.stateMutex.Unlock() if channel.metadata == nil { channel.metadata = make(map[string]string) } channel.metadata[key] = value - channel.stateMutex.Unlock() - channel.MarkDirty(IncludeAllAttrs) } func (channel *Channel) ListMetadata() map[string]string { @@ -923,21 +918,22 @@ func (channel *Channel) ListMetadata() map[string]string { } func (channel *Channel) DeleteMetadata(key string) { - channel.stateMutex.Lock() - delete(channel.metadata, key) + defer channel.MarkDirty(IncludeAllAttrs) - channel.stateMutex.Unlock() - channel.MarkDirty(IncludeAllAttrs) + channel.stateMutex.Lock() + defer channel.stateMutex.Unlock() + + delete(channel.metadata, key) } func (channel *Channel) ClearMetadata() map[string]string { + defer channel.MarkDirty(IncludeAllAttrs) channel.stateMutex.Lock() + defer channel.stateMutex.Unlock() oldMap := channel.metadata - channel.metadata = make(map[string]string) + channel.metadata = nil - channel.stateMutex.Unlock() - channel.MarkDirty(IncludeAllAttrs) return oldMap } @@ -945,22 +941,15 @@ func (channel *Channel) CountMetadata() int { channel.stateMutex.RLock() defer channel.stateMutex.RUnlock() - if channel.metadata == nil { - return 0 - } - return len(channel.metadata) } -func (client *Client) GetMetadata(key string) (string, error) { +func (client *Client) GetMetadata(key string) (string, bool) { client.stateMutex.RLock() defer client.stateMutex.RUnlock() val, ok := client.metadata[key] - if !ok { - return "", errMetadataNotFound - } - return val, nil + return val, ok } func (client *Client) SetMetadata(key string, value string) { @@ -993,7 +982,7 @@ func (client *Client) ClearMetadata() map[string]string { defer client.stateMutex.Unlock() oldMap := client.metadata - client.metadata = make(map[string]string) + client.metadata = nil return oldMap } diff --git a/irc/handlers.go b/irc/handlers.go index 2311b161..6d727268 100644 --- a/irc/handlers.go +++ b/irc/handlers.go @@ -3201,8 +3201,8 @@ func metadataHandler(server *Server, client *Client, msg ircmsg.Message, rb *Res continue } - val, err := t.GetMetadata(key) - if err == errMetadataNotFound { + val, ok := t.GetMetadata(key) + if !ok { rb.Add(nil, server.name, RPL_KEYNOTSET, client.Nick(), target, key, client.t("Key is not set")) continue } diff --git a/irc/metadata.go b/irc/metadata.go index 8028731f..d7094065 100644 --- a/irc/metadata.go +++ b/irc/metadata.go @@ -17,7 +17,7 @@ var ( type MetadataHaver = interface { SetMetadata(key string, value string) - GetMetadata(key string) (string, error) + GetMetadata(key string) (string, bool) DeleteMetadata(key string) ListMetadata() map[string]string ClearMetadata() map[string]string