8460: Add object_kind field.
[arvados.git] / services / ws / session_v0.go
index 29a7adec82a7fcd62905e08d9018bb983b174cd7..2b108a2b5c09ea4b25d94e098b024524911dd362 100644 (file)
@@ -23,6 +23,7 @@ var (
 )
 
 type v0session struct {
+       ac            *arvados.Client
        ws            wsConn
        sendq         chan<- interface{}
        db            *sql.DB
@@ -34,12 +35,13 @@ 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, ac *arvados.Client) (session, error) {
        sess := &v0session{
                sendq:       sendq,
                ws:          ws,
                db:          db,
-               permChecker: NewPermChecker(ac),
+               ac:          ac,
+               permChecker: pc,
                log:         logger(ws.Request().Context()),
        }
 
@@ -86,12 +88,14 @@ func (sess *v0session) EventMessage(e *event) ([]byte, error) {
                return nil, err
        }
 
+       kind, _ := sess.ac.KindForUUID(detail.ObjectUUID)
        msg := map[string]interface{}{
                "msgID":             atomic.AddUint64(&sess.lastMsgID, 1),
                "id":                detail.ID,
                "uuid":              detail.UUID,
                "object_uuid":       detail.ObjectUUID,
                "object_owner_uuid": detail.ObjectOwnerUUID,
+               "object_kind":       kind,
                "event_type":        detail.EventType,
        }
        if detail.Properties != nil && detail.Properties["text"] != nil {
@@ -165,9 +169,11 @@ func (sub *v0subscribe) sendOldEvents(sess *v0session) {
                        // same thing all over again.
                        time.Sleep(100 * time.Millisecond)
                }
+               now := time.Now()
                e := &event{
                        LogID:    id,
-                       Received: time.Now(),
+                       Received: now,
+                       Ready:    now,
                        db:       sess.db,
                }
                if sub.match(sess, e) {