// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package principal

import "v.io/v23/security"

// Identifier of a blessings cache entry.
type BlessingsId uint32

type BlessingsCacheAddMessage struct {
  CacheId BlessingsId
  Blessings security.WireBlessings
}

// Message from Blessings Cache GC to delete a cache entry in Javascript.
type BlessingsCacheDeleteMessage struct {
  CacheId BlessingsId

  // Number of references expected. Javascript should wait until this number
  // has been received before deleting the entry because up until that point
  // messages with further references are expected.
  DeleteAfter uint32
}

type BlessingsCacheMessage union {
  Add BlessingsCacheAddMessage
  Delete BlessingsCacheDeleteMessage
}
