10383: Merge branch 'master' into 10383-arv-put-incremental-upload
[arvados.git] / services / ws / session.go
index d148f59128da879eb37689120ccdf95700018f5f..67f460865c747e13a277eb47ea24ae8c87304d56 100644 (file)
@@ -1,10 +1,16 @@
 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 +29,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)