Own fork of MbedSmartRest

Dependents:   MbedSmartRestMain MbedSmartRestMain

Fork of MbedSmartRest by Cumulocity Official

Revision:
5:2b74510900da
Parent:
4:059b8b90e0d9
Child:
6:cd7ba1ddb664
--- a/SmartRest.cpp	Wed Jul 09 15:37:19 2014 +0200
+++ b/SmartRest.cpp	Thu Jul 10 16:20:31 2014 +0200
@@ -48,6 +48,79 @@
     return SMARTREST_SUCCESS;
 }
 
+#ifdef SMARTREST_TRANSACTIONAL
+uint8_t SmartRest::request(const DataGenerator& generator, const char *overrideIdentifier)
+{
+    uint8_t res;
+
+    res = send(generator, overrideIdentifier);
+    stop();
+    return res;
+}
+
+uint8_t SmartRest::request(const DataGenerator& generator, Aggregator& aggregator, const char *overrideIdentifier)
+{
+    uint8_t res;
+
+    if (!aggregator.isManaged())
+        return SMARTREST_INTERNAL_ERROR;
+
+    res = send(generator, overrideIdentifier);
+    if (res != SMARTREST_SUCCESS) {
+        stop();
+        return res;
+    }
+
+    ParsedRecord recvd;
+    while ((res = receive(recvd)) == SMARTREST_SUCCESS)
+        aggregator.add(recvd);
+
+    stop();
+    if (res == SMARTREST_END_OF_RESPONSE)
+        return SMARTREST_SUCCESS;
+    return res;
+}
+#endif
+
+uint8_t SmartRest::bootstrap(const DataGenerator& generator)
+{
+    ParsedRecord record;
+    int8_t ret;
+
+    ret = beginRequest(NULL);
+    if (ret != SMARTREST_SUCCESS)
+        return ret;
+    ret = awaitResponse();
+    if (ret != SMARTREST_SUCCESS)
+        return ret;
+    ret = receive(record);
+    if (ret != SMARTREST_SUCCESS)
+        return ret;
+    if (!record) {
+        return SMARTREST_INTERNAL_ERROR;
+    }
+    stop();
+
+    if (setMoGid(record))
+        return SMARTREST_SUCCESS;
+
+    if (record.value(0).integerValue() != 40)
+        return SMARTREST_INTERNAL_ERROR;
+
+    ret = send(generator, NULL);
+    if (ret != SMARTREST_SUCCESS)
+        return ret;
+    ret = receive(record);
+    if (ret != SMARTREST_SUCCESS)
+        return ret;
+    stop();
+
+    if (!setMoGid(record))
+        return SMARTREST_INTERNAL_ERROR;
+
+    return SMARTREST_SUCCESS;
+}
+
 uint8_t SmartRest::send(const DataGenerator& generator, const char *overrideIdentifier)
 {
     uint8_t res;
@@ -80,45 +153,6 @@
     return SMARTREST_INTERNAL_ERROR;
 }
 
-uint8_t SmartRest::bootstrap(const DataGenerator& generator)
-{
-    ParsedRecord record;
-    int8_t ret;
-
-    ret = beginRequest(NULL);
-    if (ret != SMARTREST_SUCCESS)
-        return ret;
-    ret = awaitResponse();
-    if (ret != SMARTREST_SUCCESS)
-        return ret;
-    ret = receive(record);
-    if (ret != SMARTREST_SUCCESS)
-        return ret;
-    if (!record) {
-        return SMARTREST_INTERNAL_ERROR;
-    }
-    stop();
-
-    if (setMoGid(record))
-        return SMARTREST_SUCCESS;
-
-    if (record.value(0).integerValue() != 40)
-        return SMARTREST_INTERNAL_ERROR;
-
-    ret = send(generator);
-    if (ret != SMARTREST_SUCCESS)
-        return ret;
-    ret = receive(record);
-    if (ret != SMARTREST_SUCCESS)
-        return ret;
-    stop();
-
-    if (!setMoGid(record))
-        return SMARTREST_INTERNAL_ERROR;
-
-    return SMARTREST_SUCCESS;
-}
-
 void SmartRest::stop()
 {
     _source = NULL;