1
0
mirror of https://github.com/Halofreak1990/XFXFramework synced 2024-12-26 13:49:34 +01:00
XFXFramework/include/System/IO/FileStream.h
Tom Lint c56db35373 Added some ContentTypeReaders
Added xnbbuild project skeleton
Added Model and supporting classes
Updated files
2013-08-11 22:41:39 +02:00

82 lines
2.6 KiB
C++

/*****************************************************************************
* FileStream.h *
* *
* XFX System::IO::FileStream class definition file *
* Copyright (c) XFX Team. All Rights Reserved *
*****************************************************************************/
#ifndef _SYSTEM_IO_FILESTREAM_
#define _SYSTEM_IO_FILESTREAM_
#include "../String.h"
#include "../Types.h"
#include "Enums.h"
#include "Stream.h"
#include <stdio.h>
namespace System
{
namespace IO
{
/**
* Exposes a Stream around a file, supporting both synchronous and asynchronous read and write operations.
*/
class FileStream : public Stream
{
private:
FILE* _file;
void* handle;
//int handle;
byte* _buffer;
FileAccess_t _access;
bool canSeek;
bool isAsync;
long long _pos;
int _readLen;
int _readPos;
int _writePos;
static const int DefaultBufferSize = 8192;
void FlushRead();
void FlushWrite(bool calledFromFinalizer);
protected:
void Dispose(bool disposing);
public:
bool CanRead();
bool CanSeek();
bool CanWrite();
virtual bool IsAsync();
long long Length();
char* Name();
long long getPosition();
void setPosition(long long newPosition);
FileStream();
FileStream(FILE * const file);
FileStream(const String& path, const FileMode_t mode);
FileStream(const String& path, const FileMode_t mode, const FileAccess_t access);
FileStream(const String& path, const FileMode_t mode, const FileAccess_t access, const FileShare_t share);
FileStream(const String& path, const FileMode_t mode, const FileAccess_t access, const FileShare_t share, const int bufferSize);
FileStream(const String& path, const FileMode_t mode, const FileAccess_t access, const FileShare_t share, const int bufferSize, const bool useAsync);
virtual ~FileStream();
virtual IAsyncResult* BeginRead(byte buffer[], int offset, int count, AsyncCallback callback, Object * const state);
virtual IAsyncResult* BeginWrite(byte buffer[], int offset, int count, AsyncCallback callback, Object * const state);
virtual int EndRead(IAsyncResult * const asyncResult);
virtual void EndWrite(IAsyncResult * const asyncResult);
void Flush();
static const Type& GetType();
int Read(byte array[], const int offset, const int count);
int ReadByte();
long long Seek(const long long offset, const SeekOrigin_t origin);
void SetLength(const long long value);
void Write(byte array[], const int offset, const int count);
void WriteByte(const byte value);
};
}
}
#endif //_SYSTEM_IO_FILESTREAM_