// Grapevine.decl -- definitions for clients of Grapevine package
// Copyright Xerox Corporation 1981
// Last modified October 30, 1981  2:09 PM by Taft

//----------------------------------------------------------------------------
structure RName:  // Registered Name -- really just a String
//----------------------------------------------------------------------------
   [ length byte; char↑1,1 byte ]
manifest maxRNameLength = 64

//----------------------------------------------------------------------------
structure Password↑0,7: byte  // Representation of individual's encryption key
//----------------------------------------------------------------------------
manifest lenPassword = size Password/16

//----------------------------------------------------------------------------
structure TimeStamp:  // Grapevine time stamp
//----------------------------------------------------------------------------
[
net byte
host byte
time word 2
]
manifest lenTimeStamp = size TimeStamp/16

//----------------------------------------------------------------------------
structure RList:  // List of RNames -- header word
//----------------------------------------------------------------------------
[
stamp @TimeStamp
queue:		// queue of RItems
  [ head word; tail word ]
]
manifest lenRList = size RList/16

//----------------------------------------------------------------------------
structure RItem:  // RName Item
//----------------------------------------------------------------------------
[
next word	// -> next RItem, or zero to end list
rName @RName	// RName
]

manifest
[
// Result/error codes returned by GrapevineNameInfo procedures.
// Not all codes can be returned by all procedures; see individual
// descriptions.
ecNoChange = 2270	// unchanged from previous lookup (can only arise
			// when an explicit stamp was passed in)
ecGroup = 2271		// RName is a group
ecIndividual = 2272	// RName is an individual
ecBadRName = 2273	// RName does not exist
ecAllDown = 2274	// can't contact any R-Server for registry
ecBadPassword = 2275	// bad password
ecIsMember = 2276	// individual is a member of group
ecIsNotMember = 2277	// individual is not a member of group
]