8460: Inject permChecker from main.
authorTom Clegg <tom@curoverse.com>
Sat, 19 Nov 2016 06:35:01 +0000 (01:35 -0500)
committerTom Clegg <tom@curoverse.com>
Sat, 19 Nov 2016 06:35:01 +0000 (01:35 -0500)
services/ws/main.go
services/ws/router.go
services/ws/session_v0.go
services/ws/session_v1.go

index 16fe87f1ccf753633316ad3d9be6e69da730e78f..33728dcae0510f889dc661847799edcd99f62847 100644 (file)
@@ -61,8 +61,9 @@ func main() {
                WriteTimeout:   time.Minute,
                MaxHeaderBytes: 1 << 20,
                Handler: &router{
-                       Config:      &cfg,
-                       eventSource: eventSource,
+                       Config:         &cfg,
+                       eventSource:    eventSource,
+                       newPermChecker: func() permChecker { return NewPermChecker(cfg.Client) },
                },
        }
        eventSource.NewSink().Stop()
index 6aef64761b87e09c93198fc99476cf45f42f1efc..1558a1d00ebc5d40af105d093fa077c54d307aa7 100644 (file)
@@ -8,7 +8,6 @@ import (
        "sync"
        "time"
 
-       "git.curoverse.com/arvados.git/sdk/go/arvados"
        "github.com/Sirupsen/logrus"
        "golang.org/x/net/websocket"
 )
@@ -21,17 +20,18 @@ type wsConn interface {
 }
 
 type router struct {
-       Config *Config
+       Config         *Config
+       eventSource    eventSource
+       newPermChecker func() permChecker
 
-       eventSource eventSource
-       mux         *http.ServeMux
-       setupOnce   sync.Once
+       mux       *http.ServeMux
+       setupOnce sync.Once
 
        lastReqID  int64
        lastReqMtx sync.Mutex
 }
 
-type sessionFactory func(wsConn, chan<- interface{}, arvados.Client, *sql.DB) (session, error)
+type sessionFactory func(wsConn, chan<- interface{}, *sql.DB, permChecker) (session, error)
 
 func (rtr *router) setup() {
        rtr.mux = http.NewServeMux()
@@ -44,7 +44,7 @@ func (rtr *router) makeServer(newSession sessionFactory) *websocket.Server {
                PingTimeout: rtr.Config.PingTimeout.Duration(),
                QueueSize:   rtr.Config.ClientEventQueue,
                NewSession: func(ws wsConn, sendq chan<- interface{}) (session, error) {
-                       return newSession(ws, sendq, rtr.Config.Client, rtr.eventSource.DB())
+                       return newSession(ws, sendq, rtr.eventSource.DB(), rtr.newPermChecker())
                },
        }
        return &websocket.Server{
index 29a7adec82a7fcd62905e08d9018bb983b174cd7..a60a4a382fd781c368c31fe8ea9cc8533a6b2867 100644 (file)
@@ -8,7 +8,6 @@ import (
        "sync/atomic"
        "time"
 
-       "git.curoverse.com/arvados.git/sdk/go/arvados"
        "github.com/Sirupsen/logrus"
 )
 
@@ -34,12 +33,12 @@ type v0session struct {
        setupOnce     sync.Once
 }
 
-func NewSessionV0(ws wsConn, sendq chan<- interface{}, ac arvados.Client, db *sql.DB) (session, error) {
+func NewSessionV0(ws wsConn, sendq chan<- interface{}, db *sql.DB, pc permChecker) (session, error) {
        sess := &v0session{
                sendq:       sendq,
                ws:          ws,
                db:          db,
-               permChecker: NewPermChecker(ac),
+               permChecker: pc,
                log:         logger(ws.Request().Context()),
        }
 
index 88e241461155de28b4d1c8f611fc001bbd801390..763fe59b283a2b243d91bcb8300e77a280368648 100644 (file)
@@ -3,10 +3,8 @@ package main
 import (
        "database/sql"
        "errors"
-
-       "git.curoverse.com/arvados.git/sdk/go/arvados"
 )
 
-func NewSessionV1(ws wsConn, sendq chan<- interface{}, ac arvados.Client, db *sql.DB) (session, error) {
+func NewSessionV1(ws wsConn, sendq chan<- interface{}, db *sql.DB, pc permChecker) (session, error) {
        return nil, errors.New("Not implemented")
 }