Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

145 lines
3.8 KiB

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
Folder.h
Abstract:
Interface for the CFolder class.
This abstract class is the base class for all 4 types of folders.
It manages it's own view internally.
Author:
Eran Yariv (EranY) Dec, 1999
Revision History:
--*/
#if !defined(AFX_FOLDER_H__80DEDFB5_FF48_41BC_95DC_04A4060CF5FD__INCLUDED_)
#define AFX_FOLDER_H__80DEDFB5_FF48_41BC_95DC_04A4060CF5FD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
typedef map<DWORDLONG, CFaxMsg*> MSGS_MAP;
class CFolder : public CTreeNode
{
public:
CFolder(FolderType type) :
CTreeNode (type),
m_pAssignedView(NULL),
m_bVisible(FALSE),
m_pServer (NULL),
m_bValidList (FALSE),
m_hBuildThread (NULL),
m_bCsDataInitialized (FALSE),
m_bRefreshFailed (FALSE),
m_bRefreshing(FALSE),
m_bLocked (FALSE)
{
DBG_ENTER (TEXT("CFolder::CFolder"));
}
virtual ~CFolder();
DECLARE_DYNAMIC(CFolder)
virtual DWORD Init ();
void AttachView();
CFolderListView* GetView() const { return m_pAssignedView; }
void SetVisible ();
void SetInvalid() { m_bValidList = FALSE; }
BOOL IsValid() { return m_bValidList; }
void SetServer (CServerNode *pServer) ;
const CServerNode* GetServer () const { return m_pServer; }
virtual void AssertValid( ) const;
DWORD InvalidateContents (BOOL bClearView);
DWORD RebuildContents ();
MSGS_MAP &GetData () { return m_Msgs; }
DWORD GetDataCount ()
{
EnterData();
int iSize = m_Msgs.size();
LeaveData();
return iSize;
}
CFaxMsg* FindMessage (DWORDLONG dwlMsgId);
void EnterData()
{
if(!m_bCsDataInitialized)
{
ASSERT (FALSE);
return;
}
EnterCriticalSection (&m_CsData);
}
void LeaveData()
{
if(!m_bCsDataInitialized)
{
ASSERT (FALSE);
return;
}
LeaveCriticalSection (&m_CsData);
}
BOOL IsRefreshing () const { return m_bRefreshing; }
DWORD OnJobRemoved (DWORDLONG dwlMsgId, CFaxMsg* pMsg = NULL);
virtual DWORD OnJobAdded (DWORDLONG dwlMsgId) = 0;
virtual DWORD OnJobUpdated (DWORDLONG dwlMsgId, PFAX_JOB_STATUS pNewStatus) = 0;
int GetActivityStringResource() const;
BOOL Locked() { return m_bLocked; }
DWORD StopBuildThread (BOOL bWaitForDeath = TRUE);
protected:
MSGS_MAP m_Msgs; // Map of message id to CFaxMsg pointer.
CFolderListView* m_pAssignedView; // Points to the view assigned to this node.
BOOL m_bVisible; // Is this node currently visible?
CServerNode *m_pServer; // Points to the server's node
BOOL m_bStopRefresh; // Should we abort the refresh operation?
BOOL m_bValidList; // Is the list of jobs / message valid?
virtual DWORD Refresh () = 0;
void PreDestruct (); // Call on sons dtor
private:
HANDLE m_hBuildThread; // Handle of background contents building thread
BOOL m_bCsDataInitialized; // Did we init the m_CsData member?
CRITICAL_SECTION m_CsData; // Critical section to protect the data
static DWORD WINAPI BuildThreadProc (LPVOID lpParameter);
BOOL m_bRefreshFailed; // Was the refresh a failure?
BOOL m_bRefreshing;
BOOL m_bLocked; // If TRUE, do not process server notifications
};
#endif // !defined(AFX_FOLDER_H__80DEDFB5_FF48_41BC_95DC_04A4060CF5FD__INCLUDED_)