aboutsummaryrefslogtreecommitdiff
path: root/Src/filereader/ProgressiveHTTPReader.h
blob: 7f4e61595cc8fcaefa3b4f93bc3752baeb44e784 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef NULLSOFT_PROGRESSIVEHTTPREADER_H
#define NULLSOFT_PROGRESSIVEHTTPREADER_H

#include <api/service/svcs/svc_fileread.h>
#include <windows.h>

class ProgressiveHTTPReader : public svc_fileReader
{
public:
	ProgressiveHTTPReader() : hFile(INVALID_HANDLE_VALUE), hMap(0), offset(0)
	{}
	int isMine(const wchar_t *filename, int mode=SvcFileReader::READ);
	int open(const wchar_t *filename, int mode=SvcFileReader::READ);
	size_t read(__int8 *buffer, size_t length);
	void IncrementPosition(uint64_t inc);
	size_t GetPageNumber() const;
private:
	char tempFile[MAX_PATH];
	HANDLE hFile;
	HANDLE hMap;
	uint32_t pageSize;
	LARGE_INTEGER pagePosition; // will always be % pageSize == 0
	uint32_t offset; // offset into the page
	
};

#endif