⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpgpdiskdiskset.h

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 H
字号:
/*____________________________________________________________________________
		Copyright (C) 2002 PGP Corporation
        All rights reserved.

        $Id: CPGPdiskDiskSet.h,v 1.7 2002/08/06 20:09:36 dallen Exp $
____________________________________________________________________________*/

#ifndef Included_CPGPdiskDiskSet_h	// [
#define Included_CPGPdiskDiskSet_h

#include "CIter.h"
#include "CList.h"

_PGP_BEGIN

// Types

class CPGPdiskDisk;
class CPGPdiskKey;


// Class CPGPdiskDiskSet

class CPGPdiskDiskSet : public CListableObject<CPGPdiskDiskSet>
{
	NOT_COPYABLE(CPGPdiskDiskSet);

	friend class CPGPdiskContext;
	friend class CPGPdiskDiskIter;

public:
	CPGPdiskDiskSet(const CPGPdiskContext *pContext);
	~CPGPdiskDiskSet();

	const CPGPdiskContext *	Context() const {return mPContext;}

	PGPUInt32	Count() const {return mDisks.Count();}

	CPGPdiskDisk *	Mount(const char *path, const CPGPdiskUser &diskUser, 
		const char *root, PGPBoolean readOnly);
	void			Unmount(CPGPdiskDisk *pDisk, PGPBoolean isForced = FALSE);

	void	UnmountTimedOut(PGPBoolean isForced = FALSE);
	void	UnmountAll(PGPBoolean isForced = FALSE);
	void	UpdateTimeouts();
	void	WipeAllUsers();

	CPGPdiskDisk *	CreateDisk(const char *path, PGPUInt64 blocksDisk, 
		PGPdiskEncryptionAlgorithm algorithm, const char *passphrase, 
		const char *userName, const char *defaultRoot, 
		NewDiskStatusFuncType statusFunc, void *userValue = NULL);

	CPGPdiskDisk *	CreateDisk(const char *path, PGPUInt64 blocksDisk, 
		PGPdiskEncryptionAlgorithm algorithm, const CPGPKey& pubKey, 
		const char *defaultRoot, NewDiskStatusFuncType statusFunc, 
		void *userValue = NULL);

	void	Update();

private:
	const CPGPdiskContext	*mPContext;

	CList<CPGPdiskDisk>				mDisks;
	mutable CList<CPGPdiskDiskIter>	mDiskIters;

	CPGPdiskDiskSet(const CPGPdiskDisk *pDisk);

	CPGPdiskDisk *	FindEqualDisk(const CPGPdiskDisk& disk) const;
	CPGPdiskDisk *	FindExactDisk(const CPGPdiskDisk *pDisk) const;

	void	UnmountAux(CPGPdiskDisk *pDisk, PGPBoolean isForced);
	void	UnmountAllAux(PGPBoolean timedOutOnly, PGPBoolean isForced);

	void	AddMounted(const CPGPdiskDiskSet& disksToAdd);
	void	AddMounted(const CPGPdiskDisk& diskToAdd);
	void	Remove(const CPGPdiskDiskSet& disksToRemove);
	void	Remove(const CPGPdiskDisk& diskToRemove);

	void	Singleton(const CPGPdiskDisk *pDisk);
	void	Empty();

	void	RewindAllDiskIters();

	void	RegisterDiskIter(CPGPdiskDiskIter *pDiskIter) const;
	void	DeregisterDiskIter(CPGPdiskDiskIter *pDiskIter) const;
};


// Class CPGPdiskDiskIter

class CPGPdiskDiskIter : 
	public CIter<CPGPdiskDisk>, public CListableObject<CPGPdiskDiskIter>
{
	NOT_COPYABLE(CPGPdiskDiskIter)

public:
	CPGPdiskDiskIter(const CPGPdiskDiskSet *pDiskSet);
	~CPGPdiskDiskIter();

	const CPGPdiskDiskSet *	DiskSet() const {return mPDiskSet;}

	CPGPdiskDisk *	SearchOnPath(const char *path);
	CPGPdiskDisk *	SearchOnRoot(const char *root);

private:
	const CPGPdiskDiskSet	*mPDiskSet;
};

_PGP_END

#endif	// ] Included_CPGPdiskDiskSet_h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -