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:
2:1038411466a6
fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vwochnik 2:1038411466a6 1 #include "MbedDataSink.h"
vwochnik 2:1038411466a6 2 #include <stdlib.h>
vwochnik 2:1038411466a6 3 #include <stdio.h>
vwochnik 2:1038411466a6 4
vwochnik 2:1038411466a6 5 MbedDataSink::MbedDataSink(size_t length)
vwochnik 2:1038411466a6 6 {
vwochnik 2:1038411466a6 7 _len = length;
vwochnik 2:1038411466a6 8 _ptr = _buf = (char*)malloc(length);
vwochnik 2:1038411466a6 9 }
vwochnik 2:1038411466a6 10
vwochnik 2:1038411466a6 11 MbedDataSink::~MbedDataSink()
vwochnik 2:1038411466a6 12 {
vwochnik 2:1038411466a6 13 free(_buf);
vwochnik 2:1038411466a6 14 }
vwochnik 2:1038411466a6 15
vwochnik 2:1038411466a6 16 size_t MbedDataSink::write(char c)
vwochnik 2:1038411466a6 17 {
vwochnik 2:1038411466a6 18 if (_ptr - _buf == _len)
vwochnik 2:1038411466a6 19 return 0;
vwochnik 2:1038411466a6 20 *_ptr++ = c;
vwochnik 2:1038411466a6 21 return 1;
vwochnik 2:1038411466a6 22 }
vwochnik 2:1038411466a6 23
vwochnik 2:1038411466a6 24 size_t MbedDataSink::write(void *buf, size_t length)
vwochnik 2:1038411466a6 25 {
vwochnik 2:1038411466a6 26 size_t written = 0;
vwochnik 2:1038411466a6 27 char *b = (char*)buf;
vwochnik 2:1038411466a6 28
vwochnik 2:1038411466a6 29 while ((length-- > 0) && (write(*b++)))
vwochnik 2:1038411466a6 30 written++;
vwochnik 2:1038411466a6 31
vwochnik 2:1038411466a6 32 return written;
vwochnik 2:1038411466a6 33 }
vwochnik 2:1038411466a6 34
vwochnik 2:1038411466a6 35 size_t MbedDataSink::write(const char *str)
vwochnik 2:1038411466a6 36 {
vwochnik 2:1038411466a6 37 size_t written = 0;
vwochnik 2:1038411466a6 38
vwochnik 2:1038411466a6 39 for (char c, *p = (char*)str; (c = *p) > 0; ++p) {
vwochnik 2:1038411466a6 40 if (!write(c))
vwochnik 2:1038411466a6 41 break;
vwochnik 2:1038411466a6 42 written++;
vwochnik 2:1038411466a6 43 }
vwochnik 2:1038411466a6 44 return written;
vwochnik 2:1038411466a6 45 }
vwochnik 2:1038411466a6 46
vwochnik 2:1038411466a6 47 size_t MbedDataSink::write(unsigned long number)
vwochnik 2:1038411466a6 48 {
vwochnik 2:1038411466a6 49 size_t left, len;
vwochnik 2:1038411466a6 50
vwochnik 2:1038411466a6 51 left = _len - (_ptr - _buf);
vwochnik 2:1038411466a6 52 len = snprintf(_ptr, left, "%ld", number);
vwochnik 2:1038411466a6 53 _ptr += len;
vwochnik 2:1038411466a6 54 return len;
vwochnik 2:1038411466a6 55 }
vwochnik 2:1038411466a6 56
vwochnik 2:1038411466a6 57 const char * MbedDataSink::buffer()
vwochnik 2:1038411466a6 58 {
vwochnik 2:1038411466a6 59 return _buf;
vwochnik 2:1038411466a6 60 }
vwochnik 2:1038411466a6 61
vwochnik 2:1038411466a6 62 size_t MbedDataSink::length()
vwochnik 2:1038411466a6 63 {
vwochnik 2:1038411466a6 64 return _ptr - _buf;
vwochnik 2:1038411466a6 65 }