aboutsummaryrefslogtreecommitdiff
path: root/internal/imap/client.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/imap/client.go')
-rw-r--r--internal/imap/client.go30
1 files changed, 14 insertions, 16 deletions
diff --git a/internal/imap/client.go b/internal/imap/client.go
index 83903fa..4a0a0d8 100644
--- a/internal/imap/client.go
+++ b/internal/imap/client.go
@@ -13,8 +13,6 @@ import (
"github.com/Necoro/feed2imap-go/pkg/log"
)
-const numberConns = 5
-
type connConf struct {
host string
delimiter string
@@ -23,13 +21,13 @@ type connConf struct {
type Client struct {
connConf
- mailboxes *mailboxes
- commander *commander
- connections [numberConns]*connection
- idxCounter int
- connChannel chan *connection
- connLock sync.Mutex
- disconnected bool
+ mailboxes *mailboxes
+ commander *commander
+ connections []*connection
+ maxConnections int
+ connChannel chan *connection
+ connLock sync.Mutex
+ disconnected bool
}
var dialer imapClient.Dialer
@@ -107,9 +105,7 @@ func (cl *Client) Disconnect() {
func (cl *Client) createConnection(c *imapClient.Client) *connection {
- cl.idxCounter++
-
- if cl.idxCounter >= len(cl.connections) {
+ if len(cl.connections) == cl.maxConnections {
panic("Too many connections")
}
@@ -121,13 +117,15 @@ func (cl *Client) createConnection(c *imapClient.Client) *connection {
c: client,
}
- cl.connections[cl.idxCounter] = conn
+ cl.connections = append(cl.connections, conn)
return conn
}
-func newClient() *Client {
+func newClient(maxConnections int) *Client {
return &Client{
- mailboxes: NewMailboxes(),
- connChannel: make(chan *connection, 0),
+ mailboxes: NewMailboxes(),
+ connChannel: make(chan *connection, 0),
+ connections: make([]*connection, 0, maxConnections),
+ maxConnections: maxConnections,
}
}