summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorKyren223 <ulmliad223@gmail.com>2024-10-24 20:06:04 +0300
committerKyren223 <ulmliad223@gmail.com>2024-10-24 20:06:04 +0300
commitd294b53e68f02f4aae98fc3f2133c7696706bf0b (patch)
tree7072187c5f8034514e0f115661bae00c10ea328c /internal/server
parenta7f743f035d0f0d14400027e4781cad76503085a (diff)
chore: add docs
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/server.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/internal/server/server.go b/internal/server/server.go
index ab178eb..ab88bd1 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -34,8 +34,6 @@ var (
tlsConfig *tls.Config
)
-var ErrClosedNilListener error = errors.New("server: close on nil listener")
-
func init() {
cert, err := tls.X509KeyPair(certPEM, keyPEM)
if err != nil {
@@ -54,6 +52,8 @@ type server struct {
sessMu sync.RWMutex
}
+// Creates a new server on the given port.
+// Will generate a unique node ID automatically, will crash if there are no available IDs.
func NewServer(port uint16) server {
assert.Assert(nodeId <= snowflake.NodeMax, "maximum amount of servers reached")
node := snowflake.NewNode(nodeId)
@@ -89,6 +89,11 @@ func (s *server) Node() *snowflake.Node {
return s.node
}
+// Starts listening and accepting clients on the server's port.
+//
+// The given context is used for cancellation,
+// note that the server will wait for all active connections to close before
+// returning, this is a blocking operation.
func (s *server) ListenAndServe(ctx context.Context) {
listener, err := tls.Listen("tcp4", ":"+strconv.Itoa(int(s.Port)), tlsConfig)
if err != nil {