"sync/atomic"
"time"
- "git.curoverse.com/arvados.git/sdk/go/arvados"
- log "github.com/Sirupsen/logrus"
+ "github.com/Sirupsen/logrus"
)
var (
permChecker permChecker
subscriptions []v0subscribe
lastMsgID uint64
- log *log.Entry
+ log *logrus.Entry
mtx sync.Mutex
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()),
}
db: sess.db,
}
if sub.match(sess, e) {
- sess.sendq <- e
+ select {
+ case sess.sendq <- e:
+ case <-sess.ws.Request().Context().Done():
+ return
+ }
}
}
if err := rows.Err(); err != nil {