123 |
122 |
124 // TODO: data types |
123 // TODO: data types |
125 // TODO: support multiple encodings |
124 // TODO: support multiple encodings |
126 |
125 |
127 relationalWriter->startRelation(L"exchange",{ |
126 relationalWriter->startRelation(L"exchange",{ |
|
127 // TODO: timestamp |
|
128 // TODO: ordinal number? |
128 {L"id", relpipe::writer::TypeId::STRING}, |
129 {L"id", relpipe::writer::TypeId::STRING}, |
129 {L"url", relpipe::writer::TypeId::STRING}, |
130 {L"url", relpipe::writer::TypeId::STRING}, |
130 {L"method", relpipe::writer::TypeId::STRING}, |
131 {L"method", relpipe::writer::TypeId::STRING}, |
131 {L"request_text", relpipe::writer::TypeId::STRING}, |
132 {L"request_text", relpipe::writer::TypeId::STRING}, |
132 {L"request_data", relpipe::writer::TypeId::STRING}, |
133 {L"request_data", relpipe::writer::TypeId::STRING}, |
|
134 {L"request_size", relpipe::writer::TypeId::INTEGER}, |
133 {L"response_text", relpipe::writer::TypeId::STRING}, |
135 {L"response_text", relpipe::writer::TypeId::STRING}, |
134 {L"response_data", relpipe::writer::TypeId::STRING}, |
136 {L"response_data", relpipe::writer::TypeId::STRING}, |
|
137 {L"response_size", relpipe::writer::TypeId::INTEGER}, |
135 {L"response_code", relpipe::writer::TypeId::INTEGER}, |
138 {L"response_code", relpipe::writer::TypeId::INTEGER}, |
136 }, true); |
139 }, true); |
|
140 |
|
141 relpipe::common::type::Integer requestSize = request.body.size(); |
|
142 relpipe::common::type::Integer responseSize = response.body.size(); |
137 |
143 |
138 relationalWriter->writeAttribute(exchangeId); |
144 relationalWriter->writeAttribute(exchangeId); |
139 relationalWriter->writeAttribute(convertor.from_bytes(request.url)); |
145 relationalWriter->writeAttribute(convertor.from_bytes(request.url)); |
140 relationalWriter->writeAttribute(convertor.from_bytes(request.method)); |
146 relationalWriter->writeAttribute(convertor.from_bytes(request.method)); |
141 relationalWriter->writeAttribute(bodyToText(convertor, request.body)); |
147 relationalWriter->writeAttribute(bodyToText(convertor, request.body)); |
142 relationalWriter->writeAttribute(bodyToHex(convertor, request.body)); |
148 relationalWriter->writeAttribute(bodyToHex(convertor, request.body)); |
|
149 relationalWriter->writeAttribute(&requestSize, typeid (requestSize)); |
143 relationalWriter->writeAttribute(bodyToText(convertor, response.body)); |
150 relationalWriter->writeAttribute(bodyToText(convertor, response.body)); |
144 relationalWriter->writeAttribute(bodyToHex(convertor, response.body)); |
151 relationalWriter->writeAttribute(bodyToHex(convertor, response.body)); |
|
152 relationalWriter->writeAttribute(&responseSize, typeid (responseSize)); |
145 relationalWriter->writeAttribute(std::to_wstring(response.code)); |
153 relationalWriter->writeAttribute(std::to_wstring(response.code)); |
146 |
154 |
147 |
155 |
148 relationalWriter->startRelation(L"header",{ |
156 relationalWriter->startRelation(L"header",{ |
|
157 // TODO: ordinal number? |
149 {L"exchange", relpipe::writer::TypeId::STRING}, |
158 {L"exchange", relpipe::writer::TypeId::STRING}, |
150 {L"url", relpipe::writer::TypeId::STRING}, |
159 {L"url", relpipe::writer::TypeId::STRING}, |
151 {L"direction", relpipe::writer::TypeId::STRING}, |
160 {L"direction", relpipe::writer::TypeId::STRING}, |
152 {L"name", relpipe::writer::TypeId::STRING}, |
161 {L"name", relpipe::writer::TypeId::STRING}, |
153 {L"value", relpipe::writer::TypeId::STRING}, |
162 {L"value", relpipe::writer::TypeId::STRING}, |