14287: Merge branch 'master'
[arvados.git] / services / ws / session.go
index d148f59128da879eb37689120ccdf95700018f5f..d41e74520e20ed71d93924eb970ac534d1f34a93 100644 (file)
@@ -1,10 +1,20 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
 package main
 
+import (
+       "database/sql"
+
+       "git.curoverse.com/arvados.git/sdk/go/arvados"
+)
+
 type session interface {
-       // Receive processes a message received from the client. If
-       // the returned list of messages is non-nil, they will be
-       // queued for sending to the client.
-       Receive(map[string]interface{}, []byte) [][]byte
+       // Receive processes a message received from the client. If a
+       // non-nil error is returned, the connection will be
+       // terminated.
+       Receive([]byte) error
 
        // Filter returns true if the event should be queued for
        // sending to the client. It should return as fast as
@@ -23,3 +33,5 @@ type session interface {
        // up, the connection will be dropped.
        EventMessage(*event) ([]byte, error)
 }
+
+type sessionFactory func(wsConn, chan<- interface{}, *sql.DB, permChecker, *arvados.Client) (session, error)