Content Management Index 类提供两项基本功能,可作为如何在内容索引应用中使用 Performance Regulator 类的实例。下面是 CMIndex 类所提供的公共方法列表。类的完整信息,可以在文件 cmindex.h 中找到。
/* _____________________________________________________
CMIndex
_____________________________________________________ */
class CMIndex
{
public:
CMIndex();
virtual ~CMIndex();
int ReadConfigFile(byte *pFullName, byte **hData, int *pSize);
int ParseConf(vector<string> &Path, int &Method, int &FileType);
int ProcessFullPathFiles(bool Clear,
vector<CONTENT_SIGNATURE> &ContentSignature,
string Filter, vector<string> &Files);
int CRC32(int &Value, byte *pData, int Count);
int GetHash(vector<CONTENT_SIGNATURE> &ContentSignature);
int GetFiles(string Directory, string Filter,
vector<string> &Files);
int OpenContent(char FileType, char *pFileName,
CU_FILESIZE &cuFileSize);
void *ReadContent(unsigned long Start, unsigned long Size);
int WriteContent(unsigned long Start, unsigned long Size, void *pBuf);
int CloseContent(char FileType);
int QuickCP(void *pDest, const void *pSrc, unsigned int Cnt);
};
|
两个基本方法为 ProcessFullPathFiles 和 GetHash:
- ProcessFullPathFiles 方法递归解析(parse)特定文件类型目录,并为给定的文件创建一个包括完整路径和文件名在内的唯一哈希表(hash)。该哈希表(hash)是一个循环冗余校验码(CRC32),为磁盘上的文件提供了一种迅速“操作方法”。
- GetHash 方法读取特定文件类型,并为数据内容创建一个循环冗余校验码(CRC32)哈希表。创建此哈希表(hash)的目的是为了能够唯一地识别数据内容,允许应用程序识别出复制的内容,但是该内容可能是用不同的名称来命名,或是被放在不同的位置。
尽管这两种方法看起来都是很简单,而且它们自身也发挥不了多大的作用,但是它们能够构成利用 Performance Regulator 的两个特性实例。第一个是关于递归解析特定文件类型目录的实例,显示了如何使用 Performance Regulator 来调节磁盘访问。第二个实例是关于读取内容文件并创造唯一哈希表的实例。这个过程会相当耗费CPU。GetHash 方法是一个很出色的实例,它说明了如何利用由 Performance Regulator 提供的 CPU 空闲时间信息来调节 CPU 的利用率。
内容识别
采用前面的两个实例——文件路径索引和内容哈希表,旨在显示如何使用 Performance Regulator 来调节资源利用率。它们都是使用 Performance Regulator 的简单实例。在随后的高级内容管理文章中,还会再提供两个实例,以展示如何使用 Performance Regulator 类,并将所有这些特性集成在一个信息管理平台框架内。新的实例之一是音频内容识别功能,它能够识别一个音频文件的内容,并且不受它编码格式的约束。这一功能非常耗费 CPU 资源,在解码和生成密钥过程中对资源的要求很高,以便用于进行音频内容识别。第二个实例为强大的图片识别功能,即使该图片已轻微改动,如修剪、着色、色调(hue)改变和文件压缩,仍能识别出来。但是怎样将这些实例与一个信息管理平台框架集成起来呢?