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_SERVER_H
11 #define AFSCLASS_SERVER_H
13 #include <WINNT/afsclass.h>
17 * SERVER CLASS _______________________________________________________________
21 #define AFSCLASS_MAX_ADDRESSES_PER_SITE 16
26 SOCKADDR_IN aAddresses[ AFSCLASS_MAX_ADDRESSES_PER_SITE ];
27 } SERVERSTATUS, *LPSERVERSTATUS;
33 friend class AGGREGATE;
38 void Invalidate (void);
39 void InvalidateStatus (void);
40 void InvalidateServices (void);
41 BOOL RefreshStatus (BOOL fNotify = TRUE, ULONG *pStatus = NULL);
42 BOOL RefreshServices (BOOL fNotify = TRUE, ULONG *pStatus = NULL);
43 BOOL RefreshAggregates (BOOL fNotify = TRUE, ULONG *pStatus = NULL);
44 BOOL RefreshAll (ULONG *pStatus = NULL, double dInit = 0.0, double dFactor = 1.0);
46 static void ShortenName (LPTSTR pszTarget, LPTSTR pszSource, BOOL fForce = FALSE);
50 BOOL fIsMonitored (void);
51 BOOL SetMonitor (BOOL fShouldMonitor, ULONG *pStatus = NULL);
53 LPIDENT GetIdentifier (void);
54 LPCELL OpenCell (ULONG *pStatus = NULL);
55 void GetName (LPTSTR pszName);
56 void GetLongName (LPTSTR pszName);
58 short GetGhostStatus (void); // returns GHOST_*
59 BOOL GetStatus (LPSERVERSTATUS lpss, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
61 PVOID GetUserParam (void);
62 void SetUserParam (PVOID pUserParam);
64 PVOID OpenBosObject (PVOID *phCell = NULL, ULONG *pStatus = NULL);
65 BOOL CloseBosObject (ULONG *pStatus = NULL);
67 PVOID OpenVosObject (PVOID *phCell = NULL, ULONG *pStatus = NULL);
68 BOOL CloseVosObject (ULONG *pStatus = NULL);
70 // Aggregates within a server
72 LPAGGREGATE OpenAggregate (LPTSTR pszName, ULONG *pStatus = NULL);
73 LPAGGREGATE OpenAggregate (ULONG dwID, ULONG *pStatus = NULL);
74 LPAGGREGATE AggregateFindFirst (HENUM *phEnum, LPIDENT lpiFind, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
75 LPAGGREGATE AggregateFindFirst (HENUM *phEnum, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
76 LPAGGREGATE AggregateFindNext (HENUM *phEnum);
77 void AggregateFindClose (HENUM *phEnum);
79 // Services within a server
81 LPSERVICE OpenService (LPTSTR pszName, ULONG *pStatus = NULL);
82 LPSERVICE ServiceFindFirst (HENUM *phEnum, LPIDENT lpiFind, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
83 LPSERVICE ServiceFindFirst (HENUM *phEnum, BOOL fNotify = TRUE, ULONG *pStatus = NULL);
84 LPSERVICE ServiceFindNext (HENUM *phEnum);
85 void ServiceFindClose (HENUM *phEnum);
88 SERVER (LPCELL lpCellParent, LPTSTR pszName);
91 void FreeAggregates (void);
92 void FreeServices (void);
93 void SendDeleteNotifications (void);
95 BOOL CanTalkToServer (ULONG *pStatus = NULL);
96 static DWORD WINAPI CanTalkToServer_ThreadProc (PVOID lp);
98 static BOOL CALLBACK KeyAggregateName_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
99 static HASHVALUE CALLBACK KeyAggregateName_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
100 static HASHVALUE CALLBACK KeyAggregateName_HashData (LPHASHLISTKEY pKey, PVOID pData);
102 static BOOL CALLBACK KeyAggregateID_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
103 static HASHVALUE CALLBACK KeyAggregateID_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
104 static HASHVALUE CALLBACK KeyAggregateID_HashData (LPHASHLISTKEY pKey, PVOID pData);
106 static BOOL CALLBACK KeyServiceName_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
107 static HASHVALUE CALLBACK KeyServiceName_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
108 static HASHVALUE CALLBACK KeyServiceName_HashData (LPHASHLISTKEY pKey, PVOID pData);
112 TCHAR m_szName[ cchNAME ];
128 BOOL m_fCanGetAggregates;
129 BOOL m_fAggregatesOutOfDate;
130 LPHASHLIST m_lAggregates;
131 LPHASHLISTKEY m_lkAggregateName;
132 LPHASHLISTKEY m_lkAggregateID;
134 BOOL m_fCanGetServices;
135 BOOL m_fServicesOutOfDate;
136 LPHASHLIST m_lServices;
137 LPHASHLISTKEY m_lkServiceName;
139 BOOL m_fVLDBOutOfDate;
140 BOOL m_fStatusOutOfDate;
147 #endif // AFSCLASS_SERVER_H