From 0053033e3287b505768b67c4d483c972732114ec Mon Sep 17 00:00:00 2001 From: mountain Date: Mon, 25 Sep 2023 12:29:26 +0900 Subject: [PATCH] =?UTF-8?q?=ED=98=84=EC=9E=AC=20block=EB=90=9C=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=EB=A5=BC=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/api.go | 10 ++++++++-- core/member_container.go | 8 ++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/api.go b/core/api.go index db88168..b59e6de 100644 --- a/core/api.go +++ b/core/api.go @@ -161,8 +161,14 @@ func (caller apiCaller) uploadAPI(w http.ResponseWriter, r *http.Request) error func (caller apiCaller) blockAPI(w http.ResponseWriter, r *http.Request) error { mg := caller.mg if r.Method == "GET" { - enc := json.NewEncoder(w) - enc.Encode(mg.bl.all()) + target, ok := gocommon.ReadObjectIDFormValue(r.Form, "accid") + if ok { + json.NewEncoder(w).Encode(mg.bl.all()) + } else if !target.IsZero() { + if blocked, ok := mg.bl.get(target); ok && blocked != nil { + json.NewEncoder(w).Encode(blocked) + } + } } else if r.Method == "PUT" { body, _ := io.ReadAll(r.Body) diff --git a/core/member_container.go b/core/member_container.go index 2c4eaa4..7259ce8 100644 --- a/core/member_container.go +++ b/core/member_container.go @@ -42,6 +42,14 @@ func (p *memberContainerPtr[K, T]) add(m T) { atomic.StorePointer(&p.ptr, unsafe.Pointer(&next)) } +func (p *memberContainerPtr[K, T]) get(key K) (T, bool) { + ptr := atomic.LoadPointer(&p.ptr) + src := (*map[K]T)(ptr) + + out, found := (*src)[key] + return out, found +} + func (p *memberContainerPtr[K, T]) remove(key K) { ptr := atomic.LoadPointer(&p.ptr) src := (*map[K]T)(ptr)