imgtools/romtools/rofsbuild/inc/cache/cacheablelist.hpp
author jjkang
Fri, 25 Jun 2010 18:11:34 +0800
changeset 600 6d08f4a05d93
permissions -rw-r--r--
add deprecated files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
600
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     1
/**
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     2
 * @file cacheablelist.hpp
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     3
 */
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     4
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     5
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     6
#ifndef ROM_TOOLS_ROFSBUILD_CACHE_CACHEABLELIST_H_
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     7
#define ROM_TOOLS_ROFSBUILD_CACHE_CACHEABLELIST_H_
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     8
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
     9
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    10
/**
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    11
 * @class CacheableList
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    12
 * @brief CacheableList is used to hold buffers for executable files to be written into the cache.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    13
 */
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    14
class CacheableList
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    15
{
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    16
public:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    17
	/**
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    18
	 * @fn CacheableList* CacheableList::GetInstance(void)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    19
	 * @return The singleton instance of class CacheableList.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    20
	 * @exception CacheException Not enough system resource to create an instance at the first this method gets called.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    21
	 */
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    22
	static CacheableList* GetInstance(void) throw (CacheException);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    23
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    24
	/**
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    25
	 * @fn void CacheableList::AddCacheable(CacheEntry* EntryRef)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    26
	 * @brief Add a file which needs to be cached into the list, cache generator will process this list.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    27
	 * @param EntryRef The instance of CacheEntry, it represents the file which is going to be cached.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    28
	 */
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    29
	void AddCacheable(CacheEntry* EntryRef);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    30
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    31
	/**
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    32
	 * @fn CacheEntry* CacheableList::GetCacheable(void)
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    33
	 * @brief Retrieve a file from this list and write it into cache, the write operation is performed by cache generator.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    34
	 * @return The instance of CacheEntry, used by cache generator.
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    35
	 */
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    36
	CacheEntry* GetCacheable(void);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    37
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    38
	virtual ~CacheableList(void);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    39
protected:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    40
	static CacheableList* Only;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    41
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    42
	std::queue<CacheEntry*> filelist;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    43
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    44
	boost::condition_variable queuecond;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    45
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    46
	boost::mutex queuemutex;
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    47
private:
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    48
	CacheableList(void);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    49
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    50
	CacheableList(const CacheableList&);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    51
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    52
	CacheableList& operator = (const CacheableList&);
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    53
};
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    54
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    55
6d08f4a05d93 add deprecated files
jjkang
parents:
diff changeset
    56
#endif  /* defined ROM_TOOLS_ROFSBUILD_CACHE_CACHEABLELIST_H_ */