#include "Request.h"
#include <new>
#include <stdlib.h>
#include "DebugSupport.h"
#include "RequestFlattener.h"
#include "RequestUnflattener.h"
RequestMember::RequestMember()
{
}
RequestMember::~RequestMember()
{
}
FlattenableRequestMember::FlattenableRequestMember()
{
}
FlattenableRequestMember::~FlattenableRequestMember()
{
}
RequestBuffer*
RequestBuffer::Create(uint32 dataSize)
{
void* buffer = malloc(sizeof(RequestBuffer) + dataSize);
if (!buffer)
return NULL;
return new(buffer) RequestBuffer;
}
void
RequestBuffer::Delete(RequestBuffer* buffer)
{
if (buffer) {
buffer->~RequestBuffer();
free(buffer);
}
}
void*
RequestBuffer::GetData()
{
return ((char*)this + sizeof(RequestBuffer));
}
const void*
RequestBuffer::GetData() const
{
return ((char*)this + sizeof(RequestBuffer));
}
Request::Request(uint32 type)
: FlattenableRequestMember(),
fType(type),
fBuffers()
{
}
Request::~Request()
{
while (RequestBuffer* buffer = fBuffers.GetFirst()) {
fBuffers.Remove(buffer);
RequestBuffer::Delete(buffer);
}
}
uint32
Request::GetType() const
{
return fType;
}
void
Request::AttachBuffer(RequestBuffer* buffer)
{
if (!buffer)
return;
fBuffers.Insert(buffer);
}
status_t
Request::Flatten(RequestFlattener* flattener)
{
ShowAround(flattener);
return B_OK;
}
status_t
Request::Unflatten(RequestUnflattener* unflattener)
{
ShowAround(unflattener);
return B_OK;
}
RequestMemberVisitor::RequestMemberVisitor()
{
}
RequestMemberVisitor::~RequestMemberVisitor()
{
}