#include <string>
#include <vector>
-#include <boost/shared_array.hpp>
+
+#ifndef PAGE_SIZE
+#define PAGE_SIZE 4096
+#endif
namespace Mf {
{
public:
- Packet(size_t size = 1024);
+ Packet(size_t size = PAGE_SIZE);
Packet(const char* data, size_t size);
+ ~Packet();
+
Packet& operator<<(bool value);
Packet& operator<<(int8_t value);
Packet& operator<<(int16_t value);
Packet& operator<<(uint16_t value);
Packet& operator<<(uint32_t value);
Packet& operator<<(uint64_t value);
- //Packet& operator<<(float value);
- //Packet& operator<<(double value);
- //Packet& operator<<(long double value);
+ Packet& operator<<(float value);
+ Packet& operator<<(double value);
size_t write(const void* bytes, size_t size);
Packet& operator>>(uint16_t& value);
Packet& operator>>(uint32_t& value);
Packet& operator>>(uint64_t& value);
+ Packet& operator>>(float& value);
+ Packet& operator>>(double& value);
size_t read(void* bytes, size_t size);
const char* bytes() const
{
- return &mBuffer.get()[mR];
+ return mBuffer + mR;
}
size_t size() const
private:
- boost::shared_array<char> mBuffer;
- size_t mSize;
+ char* mBuffer;
+ size_t mSize;
- size_t mR;
- size_t mW;
+ size_t mR;
+ size_t mW;
- size_t mBoolR;
- size_t mBoolW;
- size_t mBoolNumR;
- size_t mBoolNumW;
+ size_t mBoolR;
+ size_t mBoolW;
+ size_t mBoolNumR;
+ size_t mBoolNumW;
};
inline Packet& operator<<(Packet& packet, const char* value)
{
- uint8_t length = strnlen(value, 255);
+ uint16_t length = strlen(value);
packet << length;
packet.write(value, length);
return packet;
inline Packet& operator<<(Packet& packet, const std::string& value)
{
- packet << (uint8_t)value.length();
+ packet << (uint16_t)value.length();
packet.write(value.c_str(), value.length());
return packet;
}