2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #ifndef AFSCLASS_AGGREGATE_H
11 #define AFSCLASS_AGGREGATE_H
15 * AGGREGATE CLASS ____________________________________________________________
22 size_t ckStorageTotal;
24 size_t ckStorageAllocated;
25 } AGGREGATESTATUS, *LPAGGREGATESTATUS;
36 void Invalidate (void);
37 void InvalidateAllocation (void);
38 BOOL RefreshStatus (BOOL fNotify = TRUE, ULONG *pStatus = NULL); // does nothing if not invalidated
39 BOOL RefreshFilesets (BOOL fNotify = TRUE, ULONG *pStatus = NULL); // does nothing if not invalidated
41 // Aggregate properties
43 LPIDENT GetIdentifier (void);
44 LPCELL OpenCell (ULONG *pStatus = NULL);
45 LPSERVER OpenServer (ULONG *pStatus = NULL);
46 void GetName (LPTSTR pszName);
47 void GetDevice (LPTSTR pszDevice);
50 BOOL GetStatus (LPAGGREGATESTATUS lpas, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
51 short GetGhostStatus (void); // returns GHOST_*
53 PVOID GetUserParam (void);
54 void SetUserParam (PVOID pUserParam);
56 // Filesets within an aggregate
58 LPFILESET OpenFileset (LPTSTR pszName, ULONG *pStatus = NULL);
59 LPFILESET OpenFileset (VOLUMEID *pvidFileset, ULONG *pStatus = NULL);
60 LPFILESET FilesetFindFirst (HENUM *phEnum, LPIDENT lpiFind, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
61 LPFILESET FilesetFindFirst (HENUM *phEnum, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
62 LPFILESET FilesetFindNext (HENUM *phEnum);
63 void FilesetFindClose (HENUM *phEnum);
66 AGGREGATE (LPSERVER lpServerParent, LPTSTR pszName, LPTSTR pszDevice);
68 void SendDeleteNotifications (void);
70 size_t CalculateAllocation (BOOL fNotify);
72 static BOOL CALLBACK AGGREGATE::KeyFilesetName_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
73 static HASHVALUE CALLBACK AGGREGATE::KeyFilesetName_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
74 static HASHVALUE CALLBACK AGGREGATE::KeyFilesetName_HashData (LPHASHLISTKEY pKey, PVOID pData);
76 static BOOL CALLBACK AGGREGATE::KeyFilesetID_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
77 static HASHVALUE CALLBACK AGGREGATE::KeyFilesetID_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
78 static HASHVALUE CALLBACK AGGREGATE::KeyFilesetID_HashData (LPHASHLISTKEY pKey, PVOID pData);
86 TCHAR m_szName[ cchNAME ];
87 TCHAR m_szDevice[ cchNAME ];
91 BOOL m_fFilesetsOutOfDate;
92 LPHASHLIST m_lFilesets;
93 LPHASHLISTKEY m_lkFilesetName;
94 LPHASHLISTKEY m_lkFilesetID;
96 BOOL m_fStatusOutOfDate;
97 BOOL m_fAllocationOutOfDate;
102 #endif // AFSCLASS_AGGREGATE_H