aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-04-05 20:32:02 +0800
committerRunxi Yu <me@runxiyu.org>2025-04-05 20:32:02 +0800
commit570fe8f00b40c01b98fe272ede170d626f99ac5d (patch)
tree7d6b07a199c9b970776891e79466cf9cfdd6500c
parentsource/static-Handler shall no longer be global variables (diff)
downloadforge-570fe8f00b40c01b98fe272ede170d626f99ac5d.tar.gz
forge-570fe8f00b40c01b98fe272ede170d626f99ac5d.tar.zst
forge-570fe8f00b40c01b98fe272ede170d626f99ac5d.zip
ircSend* shall no longer be global variables
-rw-r--r--git_hooks_handle_linux.go2
-rw-r--r--git_hooks_handle_other.go2
-rw-r--r--irc.go21
-rw-r--r--server.go3
4 files changed, 13 insertions, 15 deletions
diff --git a/git_hooks_handle_linux.go b/git_hooks_handle_linux.go
index ca262e3..fde4c7e 100644
--- a/git_hooks_handle_linux.go
+++ b/git_hooks_handle_linux.go
@@ -251,7 +251,7 @@ func (s *server) hooksHandler(conn net.Conn) {
fmt.Fprintln(sshStderr, ansiec.Blue+"Created merge request at", mergeRequestWebURL+ansiec.Reset)
select {
- case ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL:
+ case s.ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL:
default:
slog.Error("IRC SendQ exceeded")
}
diff --git a/git_hooks_handle_other.go b/git_hooks_handle_other.go
index ed75e7a..8b99285 100644
--- a/git_hooks_handle_other.go
+++ b/git_hooks_handle_other.go
@@ -229,7 +229,7 @@ func (s *server) hooksHandler(conn net.Conn) {
fmt.Fprintln(sshStderr, ansiec.Blue+"Created merge request at", mergeRequestWebURL+ansiec.Reset)
select {
- case ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL:
+ case s.ircSendBuffered <- "PRIVMSG #chat :New merge request at " + mergeRequestWebURL:
default:
slog.Error("IRC SendQ exceeded")
}
diff --git a/irc.go b/irc.go
index 69cc9f0..49fa28f 100644
--- a/irc.go
+++ b/irc.go
@@ -11,11 +11,6 @@ import (
irc "go.lindenii.runxiyu.org/lindenii-irc"
)
-var (
- ircSendBuffered chan string
- ircSendDirectChan chan errorBack[string]
-)
-
type errorBack[T any] struct {
content T
errorBack chan error
@@ -98,18 +93,18 @@ func (s *server) ircBotSession() error {
select {
case err = <-readLoopError:
return err
- case line := <-ircSendBuffered:
+ case line := <-s.ircSendBuffered:
_, err = logAndWriteLn(line)
if err != nil {
select {
- case ircSendBuffered <- line:
+ case s.ircSendBuffered <- line:
default:
slog.Error("unable to requeue message", "line", line)
}
writeLoopAbort <- struct{}{}
return err
}
- case lineErrorBack := <-ircSendDirectChan:
+ case lineErrorBack := <-s.ircSendDirectChan:
_, err = logAndWriteLn(lineErrorBack.content)
lineErrorBack.errorBack <- err
if err != nil {
@@ -122,11 +117,11 @@ func (s *server) ircBotSession() error {
// ircSendDirect sends an IRC message directly to the connection and bypasses
// the buffering system.
-func ircSendDirect(s string) error {
+func (s *server) ircSendDirect(line string) error {
ech := make(chan error, 1)
- ircSendDirectChan <- errorBack[string]{
- content: s,
+ s.ircSendDirectChan <- errorBack[string]{
+ content: line,
errorBack: ech,
}
@@ -135,8 +130,8 @@ func ircSendDirect(s string) error {
// TODO: Delay and warnings?
func (s *server) ircBotLoop() {
- ircSendBuffered = make(chan string, s.config.IRC.SendQ)
- ircSendDirectChan = make(chan errorBack[string])
+ s.ircSendBuffered = make(chan string, s.config.IRC.SendQ)
+ s.ircSendDirectChan = make(chan errorBack[string])
for {
err := s.ircBotSession()
diff --git a/server.go b/server.go
index 7dbca97..30b39f1 100644
--- a/server.go
+++ b/server.go
@@ -16,4 +16,7 @@ type server struct {
sourceHandler http.Handler
staticHandler http.Handler
+
+ ircSendBuffered chan string
+ ircSendDirectChan chan errorBack[string]
}