From d0917f0fa1182d32c82621b4e156d7f02d9179c4 Mon Sep 17 00:00:00 2001 From: delthas Date: Mon, 23 Mar 2020 03:18:54 +0100 Subject: [PATCH] Add a server-unique id to each downstream Adding a simple uint64 id to each downstream is preparatory work for labeled-responses tags targeting a specific downstream. --- downstream.go | 4 +++- server.go | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/downstream.go b/downstream.go index 9636456..f5bc48c 100644 --- a/downstream.go +++ b/downstream.go @@ -57,6 +57,7 @@ type ringMessage struct { } type downstreamConn struct { + id uint64 net net.Conn irc *irc.Conn srv *Server @@ -85,8 +86,9 @@ type downstreamConn struct { ourMessages map[*irc.Message]struct{} } -func newDownstreamConn(srv *Server, netConn net.Conn) *downstreamConn { +func newDownstreamConn(srv *Server, netConn net.Conn, id uint64) *downstreamConn { dc := &downstreamConn{ + id: id, net: netConn, irc: irc.NewConn(netConn), srv: srv, diff --git a/server.go b/server.go index 62d30da..60dfafc 100644 --- a/server.go +++ b/server.go @@ -100,6 +100,7 @@ func (s *Server) getUser(name string) *user { } func (s *Server) Serve(ln net.Listener) error { + var nextDownstreamID uint64 = 1 for { netConn, err := ln.Accept() if err != nil { @@ -108,7 +109,8 @@ func (s *Server) Serve(ln net.Listener) error { setKeepAlive(netConn) - dc := newDownstreamConn(s, netConn) + dc := newDownstreamConn(s, netConn, nextDownstreamID) + nextDownstreamID++ go func() { s.lock.Lock() s.downstreamConns = append(s.downstreamConns, dc)