// 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

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

type BlessingsCacheAddMessage struct {
  CacheId BlessingsId
  Blessings JsBlessings
}

// 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
}
