diff --git a/src/Firebase.h b/src/Firebase.h index 81875e23..f3ae68e6 100644 --- a/src/Firebase.h +++ b/src/Firebase.h @@ -74,7 +74,7 @@ class Firebase { class FirebaseError { public: FirebaseError() {} - FirebaseError(int code, const std::string& message) : code_(code), message_(message) { + FirebaseError(int code, const std::string& message) : code_(code), message_(message) { } operator bool() const { return code_ != 0; } int code() const { return code_; } diff --git a/src/FirebaseArduino.cpp b/src/FirebaseArduino.cpp index d2fc9c5e..ada8adba 100644 --- a/src/FirebaseArduino.cpp +++ b/src/FirebaseArduino.cpp @@ -131,6 +131,10 @@ 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(); } diff --git a/src/FirebaseArduino.h b/src/FirebaseArduino.h index a0bcca27..252151a5 100644 --- a/src/FirebaseArduino.h +++ b/src/FirebaseArduino.h @@ -31,6 +31,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 106538e6..32f69b4c 100644 --- a/src/FirebaseHttpClient.h +++ b/src/FirebaseHttpClient.h @@ -20,6 +20,8 @@ class FirebaseHttpClient { virtual void end() = 0; + virtual bool connected() = 0; + virtual void addHeader(const std::string& name, const std::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 4d65ac1f..d397aef0 100644 --- a/src/FirebaseHttpClient_Esp8266.cpp +++ b/src/FirebaseHttpClient_Esp8266.cpp @@ -35,7 +35,11 @@ class FirebaseHttpClientEsp8266 : public FirebaseHttpClient { http_.end(); } - void addHeader(const std::string& name, const std::string& value) override { + bool connected() override { + return http_.connected(); + } + + void addHeader(const std::string& name, const std::string& value) override { http_.addHeader(name.c_str(), value.c_str()); } diff --git a/test/Makefile b/test/Makefile index 403b0cbc..d41c566e 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 571fa842..8e40ed4a 100644 --- a/test/dummies/FirebaseHttpClient_dummy.cpp +++ b/test/dummies/FirebaseHttpClient_dummy.cpp @@ -20,6 +20,9 @@ class FirebaseHttpClientDummy : public FirebaseHttpClient { void end() override { } + bool connected() override { + return true; + void addHeader(const std::string& UNUSED_ARG(name), const std::string& UNUSED_ARG(value)) override { }