From 18092d2632ffaef41d3ca5efae8bb12292c20c9f Mon Sep 17 00:00:00 2001 From: Ed Coyne Date: Wed, 1 Jun 2016 16:19:47 -0700 Subject: [PATCH 1/3] Added disconnect error --- src/Firebase.h | 4 ++-- src/FirebaseArduino.cpp | 3 +++ src/FirebaseArduino.h | 4 ++++ src/FirebaseHttpClient.h | 2 ++ src/FirebaseHttpClient_Esp8266.cpp | 4 ++++ 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Firebase.h b/src/Firebase.h index df214dd2..f5632e1f 100644 --- a/src/Firebase.h +++ b/src/Firebase.h @@ -80,8 +80,8 @@ class FirebaseError { int code() const { return code_; } const String& message() const { return message_; } private: - int code_ = 0; - String message_ = ""; + const int code_ = 0; + const String message_ = ""; }; class FirebaseCall { diff --git a/src/FirebaseArduino.cpp b/src/FirebaseArduino.cpp index dfa782f7..f093af77 100644 --- a/src/FirebaseArduino.cpp +++ b/src/FirebaseArduino.cpp @@ -128,6 +128,9 @@ void FirebaseArduino::stream(const String& path) { } bool FirebaseArduino::available() { + if (!http_->connected()) { + error_ = FirebaseError(HTTP_CONNECTION_LOST, "Connection Lost"); + } return http_->getStreamPtr()->available(); } diff --git a/src/FirebaseArduino.h b/src/FirebaseArduino.h index 2b20db02..977da048 100644 --- a/src/FirebaseArduino.h +++ b/src/FirebaseArduino.h @@ -29,6 +29,10 @@ */ class FirebaseArduino { public: + enum ERROR_CODES { + HTTP_CONNECTION_LOST = -5 + }; + /** * Must be called first. This initialize the client with the given * firebase host and credentials. diff --git a/src/FirebaseHttpClient.h b/src/FirebaseHttpClient.h index 326c7410..911f03b9 100644 --- a/src/FirebaseHttpClient.h +++ b/src/FirebaseHttpClient.h @@ -18,6 +18,8 @@ class FirebaseHttpClient { virtual void end() = 0; + virtual bool connected() = 0; + virtual void addHeader(const String& name, const String& value) = 0; virtual void collectHeaders(const char* header_keys[], const int header_key_count) = 0; diff --git a/src/FirebaseHttpClient_Esp8266.cpp b/src/FirebaseHttpClient_Esp8266.cpp index 145afa9a..5ef90b84 100644 --- a/src/FirebaseHttpClient_Esp8266.cpp +++ b/src/FirebaseHttpClient_Esp8266.cpp @@ -33,6 +33,10 @@ class FirebaseHttpClientEsp8266 : public FirebaseHttpClient { http_.end(); } + bool connected() override { + return http_.connected(); + } + void addHeader(const String& name, const String& value) override { http_.addHeader(name, value); } From 1e73e8d3a61b48fdb766d8844f21f6538bd62ff9 Mon Sep 17 00:00:00 2001 From: Ed Coyne Date: Wed, 1 Jun 2016 16:23:25 -0700 Subject: [PATCH 2/3] tests working --- src/Firebase.h | 8 ++++---- test/Makefile | 3 +-- test/dummies/FirebaseHttpClient_dummy.cpp | 4 ++++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Firebase.h b/src/Firebase.h index f5632e1f..a4e41cec 100644 --- a/src/Firebase.h +++ b/src/Firebase.h @@ -74,14 +74,14 @@ class Firebase { class FirebaseError { public: FirebaseError() {} - FirebaseError(int code, const String& message) : code_(code), message_(message) { - } + FirebaseError(int code, const String& message) + : code_(code), message_(message) {} operator bool() const { return code_ != 0; } int code() const { return code_; } const String& message() const { return message_; } private: - const int code_ = 0; - const String message_ = ""; + int code_ = 0; + String message_ = ""; }; class FirebaseCall { diff --git a/test/Makefile b/test/Makefile index 84ba5c35..887c2b16 100644 --- a/test/Makefile +++ b/test/Makefile @@ -18,8 +18,7 @@ FIREBASE_DIR=.. GTEST_DIR=googletest/googletest ARDUINOJSON_DIR=../src/third-party/arduino-json-5.3 -FIREBASE_SRCS=${FIREBASE_DIR}/src/FirebaseObject.cpp\ - ${FIREBASE_DIR}/src/FirebaseObject.h +FIREBASE_SRCS=${FIREBASE_DIR}/src/FirebaseObject.cpp GTEST_SRCS=${GTEST_DIR}/src/gtest-all.cpp ARDUINOJSON_SRCS=${ARDUINOJSON_DIR}/src/JsonBuffer.cpp\ ${ARDUINOJSON_DIR}/src/JsonObject.cpp\ diff --git a/test/dummies/FirebaseHttpClient_dummy.cpp b/test/dummies/FirebaseHttpClient_dummy.cpp index e8a746e9..0b3539ba 100644 --- a/test/dummies/FirebaseHttpClient_dummy.cpp +++ b/test/dummies/FirebaseHttpClient_dummy.cpp @@ -20,6 +20,10 @@ class FirebaseHttpClientDummy : public FirebaseHttpClient { void end() override { } + bool connected() override { + return true; + } + void addHeader(const String& UNUSED_ARG(name), const String& UNUSED_ARG(value)) override { } From aaa648812a5eaba3c46d61a817cb7d14e5c79c7f Mon Sep 17 00:00:00 2001 From: Ed Coyne Date: Thu, 30 Jun 2016 13:18:31 -0700 Subject: [PATCH 3/3] available() returns false if not connected --- src/FirebaseArduino.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/FirebaseArduino.cpp b/src/FirebaseArduino.cpp index 6b4daeaf..ada8adba 100644 --- a/src/FirebaseArduino.cpp +++ b/src/FirebaseArduino.cpp @@ -133,6 +133,7 @@ void FirebaseArduino::stream(const String& path) { bool FirebaseArduino::available() { if (!http_->connected()) { error_ = FirebaseError(HTTP_CONNECTION_LOST, "Connection Lost"); + return false; } return http_->getStreamPtr()->available(); }