first commit
This commit is contained in:
48
Minecraft.World/ZoneIo.cpp
Normal file
48
Minecraft.World/ZoneIo.cpp
Normal file
@@ -0,0 +1,48 @@
|
||||
#include "stdafx.h"
|
||||
#include "ByteBuffer.h"
|
||||
#include "ZoneIo.h"
|
||||
|
||||
ZoneIo::ZoneIo(HANDLE channel, __int64 pos)
|
||||
{
|
||||
this->channel = channel;
|
||||
this->pos = pos;
|
||||
}
|
||||
|
||||
void ZoneIo::write(byteArray bb, int size)
|
||||
{
|
||||
ByteBuffer *buff = ByteBuffer::wrap(bb);
|
||||
// if (bb.length != size) throw new IllegalArgumentException("Expected " + size + " bytes, got " + bb.length); // 4J - TODO
|
||||
buff->order(ZonedChunkStorage::BYTEORDER);
|
||||
buff->position(bb.length);
|
||||
buff->flip();
|
||||
write(buff, size);
|
||||
delete buff;
|
||||
}
|
||||
|
||||
void ZoneIo::write(ByteBuffer *bb, int size)
|
||||
{
|
||||
DWORD numberOfBytesWritten;
|
||||
SetFilePointer(channel,(int)pos,NULL,NULL);
|
||||
WriteFile(channel,bb->getBuffer(), bb->getSize(),&numberOfBytesWritten,NULL);
|
||||
pos += size;
|
||||
}
|
||||
|
||||
ByteBuffer *ZoneIo::read(int size)
|
||||
{
|
||||
DWORD numberOfBytesRead;
|
||||
byteArray bb = byteArray(size);
|
||||
SetFilePointer(channel,(int)pos,NULL,NULL);
|
||||
ByteBuffer *buff = ByteBuffer::wrap(bb);
|
||||
// 4J - to investigate - why is this buffer flipped before anything goes in it?
|
||||
buff->order(ZonedChunkStorage::BYTEORDER);
|
||||
buff->position(size);
|
||||
buff->flip();
|
||||
ReadFile(channel, buff->getBuffer(), buff->getSize(), &numberOfBytesRead, NULL);
|
||||
pos += size;
|
||||
return buff;
|
||||
}
|
||||
|
||||
void ZoneIo::flush()
|
||||
{
|
||||
// 4J - was channel.force(false);
|
||||
}
|
||||
Reference in New Issue
Block a user