1// Request.cpp
2
3#include "Request.h"
4
5#include <new>
6
7#include <stdlib.h>
8
9#include "DebugSupport.h"
10#include "RequestFlattener.h"
11#include "RequestUnflattener.h"
12
13// RequestMember
14
15// constructor
16RequestMember::RequestMember()
17{
18}
19
20// destructor
21RequestMember::~RequestMember()
22{
23}
24
25
26// #pragma mark -
27
28// FlattenableRequestMember
29
30// constructor
31FlattenableRequestMember::FlattenableRequestMember()
32{
33}
34
35// destructor
36FlattenableRequestMember::~FlattenableRequestMember()
37{
38}
39
40
41// #pragma mark -
42
43// Create
44RequestBuffer*
45RequestBuffer::Create(uint32 dataSize)
46{
47	void* buffer = malloc(sizeof(RequestBuffer) + dataSize);
48	if (!buffer)
49		return NULL;
50
51	return new(buffer) RequestBuffer;
52}
53
54// Delete
55void
56RequestBuffer::Delete(RequestBuffer* buffer)
57{
58	if (buffer) {
59		buffer->~RequestBuffer();
60		free(buffer);
61	}
62}
63
64// GetData
65void*
66RequestBuffer::GetData()
67{
68	return ((char*)this + sizeof(RequestBuffer));
69}
70
71// GetData
72const void*
73RequestBuffer::GetData() const
74{
75	return ((char*)this + sizeof(RequestBuffer));
76}
77
78
79// #pragma mark -
80
81// Request
82
83// constructor
84Request::Request(uint32 type)
85	: FlattenableRequestMember(),
86	  fType(type),
87	  fBuffers()
88{
89}
90
91// destructor
92Request::~Request()
93{
94	while (RequestBuffer* buffer = fBuffers.GetFirst()) {
95		fBuffers.Remove(buffer);
96		RequestBuffer::Delete(buffer);
97	}
98}
99
100// GetType
101uint32
102Request::GetType() const
103{
104	return fType;
105}
106
107// AttachBuffer
108void
109Request::AttachBuffer(RequestBuffer* buffer)
110{
111	if (!buffer)
112		return;
113
114	fBuffers.Insert(buffer);
115
116}
117
118// Flatten
119status_t
120Request::Flatten(RequestFlattener* flattener)
121{
122	ShowAround(flattener);
123	return B_OK;
124}
125
126// Unflatten
127status_t
128Request::Unflatten(RequestUnflattener* unflattener)
129{
130	ShowAround(unflattener);
131	return B_OK;
132}
133
134
135// #pragma mark -
136
137// RequestMemberVisitor
138
139// constructor
140RequestMemberVisitor::RequestMemberVisitor()
141{
142}
143
144// destructor
145RequestMemberVisitor::~RequestMemberVisitor()
146{
147}
148
149