a

Dependencies:   mbed-http

Fork of http-example by sandbox

Revision:
16:1374b4c35897
Parent:
12:4c226ca06191
Child:
17:97b1dd566b07
--- a/source/main-https-socket-reuse.cpp	Thu Jul 27 15:08:59 2017 +0200
+++ b/source/main-https-socket-reuse.cpp	Mon Sep 04 16:32:38 2017 +0100
@@ -9,6 +9,7 @@
 #include "mbed.h"
 #include "easy-connect.h"
 #include "https_request.h"
+#include "mbed_stats.h"
 
 Serial pc(USBTX, USBRX);
 
@@ -55,14 +56,20 @@
     mbedtls_printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
 }
 
-int main() {
-    pc.baud(115200);
+void run() {
+    mbed_stats_heap_t heap_stats;
+
+    mbed_stats_heap_get(&heap_stats);
+    printf("[1] Heap: %lu / %lu\n", heap_stats.current_size, heap_stats.reserved_size);
 
     NetworkInterface* network = easy_connect(true);
     if (!network) {
-        return 1;
+        return;
     }
 
+    mbed_stats_heap_get(&heap_stats);
+    printf("[2] Heap: %lu / %lu\n", heap_stats.current_size, heap_stats.reserved_size);
+
     // Create a TLS socket (which holds a TCPSocket)
     printf("\n----- Setting up TLS connection -----\n");
 
@@ -70,9 +77,12 @@
     socket->set_debug(true);
     if (socket->connect() != 0) {
         printf("TLS Connect failed %d\n", socket->error());
-        return 1;
+        return;
     }
 
+    mbed_stats_heap_get(&heap_stats);
+    printf("[3] Heap: %lu / %lu\n", heap_stats.current_size, heap_stats.reserved_size);
+
     // GET request to httpbin.org
     {
         HttpsRequest* get_req = new HttpsRequest(socket, HTTP_GET, "https://httpbin.org/status/418");
@@ -81,14 +91,20 @@
         HttpResponse* get_res = get_req->send();
         if (!get_res) {
             printf("HttpRequest failed (error code %d)\n", get_req->get_error());
-            return 1;
+            return;
         }
         printf("\n----- HTTPS GET response -----\n");
         dump_response(get_res);
 
+        mbed_stats_heap_get(&heap_stats);
+        printf("[4a] Heap: %lu / %lu\n", heap_stats.current_size, heap_stats.reserved_size);
+
         delete get_req;
     }
 
+    mbed_stats_heap_get(&heap_stats);
+    printf("[4] Heap: %lu / %lu\n", heap_stats.current_size, heap_stats.reserved_size);
+
     // POST request to httpbin.org
     {
         HttpsRequest* post_req = new HttpsRequest(socket, HTTP_POST, "https://httpbin.org/post");
@@ -100,7 +116,7 @@
         HttpResponse* post_res = post_req->send(body, strlen(body));
         if (!post_res) {
             printf("HttpRequest failed (error code %d)\n", post_req->get_error());
-            return 1;
+            return;
         }
 
         printf("\n----- HTTPS POST response -----\n");
@@ -109,8 +125,23 @@
         delete post_req;
     }
 
+    mbed_stats_heap_get(&heap_stats);
+    printf("[5] Heap: %lu / %lu\n", heap_stats.current_size, heap_stats.reserved_size);
+
     delete socket;
 
+    mbed_stats_heap_get(&heap_stats);
+    printf("[6] Heap: %lu / %lu\n", heap_stats.current_size, heap_stats.reserved_size);
+
+    Thread::wait(osWaitForever);
+}
+
+int main() {
+    pc.baud(115200);
+
+    Thread t(osPriorityNormal, 8 * 1024);
+    t.start(&run);
+
     Thread::wait(osWaitForever);
 }