A client for the SmartREST protocol from Cumulocity.

Dependencies:   HTTPClient SmartRest

Committer:
vwochnik
Date:
Wed Apr 02 12:23:46 2014 +0000
Revision:
12:788dd934f283
Parent:
3:ce2f116369bd
fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vwochnik 2:1038411466a6 1 #include "HTTPBuffer.h"
vwochnik 2:1038411466a6 2 #include <stdlib.h>
vwochnik 3:ce2f116369bd 3 #include <string.h>
vwochnik 2:1038411466a6 4
vwochnik 2:1038411466a6 5 HTTPBuffer::HTTPBuffer()
vwochnik 2:1038411466a6 6 {
vwochnik 2:1038411466a6 7 _rptr = _wptr = _buf = NULL;
vwochnik 2:1038411466a6 8 bufferSize(HTTPBUFFER_INITIAL_SIZE);
vwochnik 2:1038411466a6 9 }
vwochnik 2:1038411466a6 10
vwochnik 2:1038411466a6 11 HTTPBuffer::~HTTPBuffer()
vwochnik 2:1038411466a6 12 {
vwochnik 2:1038411466a6 13 if (_buf != NULL)
vwochnik 2:1038411466a6 14 free(_buf);
vwochnik 2:1038411466a6 15 }
vwochnik 2:1038411466a6 16
vwochnik 2:1038411466a6 17 char HTTPBuffer::read()
vwochnik 2:1038411466a6 18 {
vwochnik 2:1038411466a6 19 if (_rptr == _wptr)
vwochnik 2:1038411466a6 20 return 0;
vwochnik 2:1038411466a6 21 return *_rptr++;
vwochnik 2:1038411466a6 22 }
vwochnik 2:1038411466a6 23
vwochnik 2:1038411466a6 24 uint8_t HTTPBuffer::status()
vwochnik 2:1038411466a6 25 {
vwochnik 2:1038411466a6 26 if (_rptr == _wptr)
vwochnik 2:1038411466a6 27 return DS_STATUS_CLOSED;
vwochnik 2:1038411466a6 28 return DS_STATUS_OK;
vwochnik 2:1038411466a6 29 }
vwochnik 2:1038411466a6 30
vwochnik 2:1038411466a6 31 void HTTPBuffer::writeReset()
vwochnik 2:1038411466a6 32 {
vwochnik 2:1038411466a6 33 _rptr = _wptr = _buf;
vwochnik 2:1038411466a6 34 bufferSize(HTTPBUFFER_INITIAL_SIZE);
vwochnik 2:1038411466a6 35 }
vwochnik 2:1038411466a6 36
vwochnik 2:1038411466a6 37 int HTTPBuffer::write(const char* buf, size_t len)
vwochnik 2:1038411466a6 38 {
vwochnik 2:1038411466a6 39 if (_wptr - _buf + len > _len) {
vwochnik 2:1038411466a6 40 size_t newLen = _len;
vwochnik 2:1038411466a6 41 while (_wptr - _buf + len > newLen)
vwochnik 2:1038411466a6 42 newLen += HTTPBUFFER_INCREMENT;
vwochnik 2:1038411466a6 43 bufferSize(newLen);
vwochnik 2:1038411466a6 44 }
vwochnik 3:ce2f116369bd 45 memcpy(_wptr, buf, len);
vwochnik 3:ce2f116369bd 46 _wptr += len;
vwochnik 2:1038411466a6 47 }
vwochnik 2:1038411466a6 48
vwochnik 2:1038411466a6 49 void HTTPBuffer::setDataType(const char* type)
vwochnik 2:1038411466a6 50 {
vwochnik 2:1038411466a6 51 }
vwochnik 2:1038411466a6 52
vwochnik 2:1038411466a6 53 void HTTPBuffer::setIsChunked(bool chunked)
vwochnik 2:1038411466a6 54 {
vwochnik 2:1038411466a6 55 }
vwochnik 2:1038411466a6 56
vwochnik 2:1038411466a6 57 void HTTPBuffer::setDataLen(size_t len)
vwochnik 2:1038411466a6 58 {
vwochnik 2:1038411466a6 59 bufferSize(len);
vwochnik 2:1038411466a6 60 }
vwochnik 2:1038411466a6 61
vwochnik 2:1038411466a6 62
vwochnik 2:1038411466a6 63 void HTTPBuffer::bufferSize(size_t length)
vwochnik 2:1038411466a6 64 {
vwochnik 2:1038411466a6 65 if (_len == length)
vwochnik 2:1038411466a6 66 return;
vwochnik 2:1038411466a6 67
vwochnik 2:1038411466a6 68 char *buf = (char*)realloc(_buf, length);
vwochnik 2:1038411466a6 69 if (buf == NULL)
vwochnik 2:1038411466a6 70 return;
vwochnik 2:1038411466a6 71
vwochnik 2:1038411466a6 72 // set pointers
vwochnik 2:1038411466a6 73 _wptr = buf + (_wptr - _buf);
vwochnik 2:1038411466a6 74 _rptr = buf + (_rptr - _buf);
vwochnik 2:1038411466a6 75 _buf = buf;
vwochnik 2:1038411466a6 76
vwochnik 3:ce2f116369bd 77 _len = length;
vwochnik 2:1038411466a6 78 }