aboutsummaryrefslogtreecommitdiff
path: root/irc.go
diff options
context:
space:
mode:
Diffstat (limited to 'irc.go')
-rw-r--r--irc.go21
1 files changed, 8 insertions, 13 deletions
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()