[vlmc-devel] [PATCH 2/3] Added libcurlpp dependency.

Hugo Beauzée-Luyssen hugo at beauzee.fr
Mon May 9 11:16:16 CEST 2016


On 05/04/2016 10:25 PM, Paweł Wegner wrote:
> ---
>   configure.ac          |  4 +++-
>   src/GoogleDrive.cpp   | 27 +++++++++++++++++++++++++++
>   src/GoogleDrive.h     | 18 ++++++++++++++++++
>   src/ICloudStorage.cpp | 14 +++++++++++++-
>   src/ICloudStorage.h   | 14 +++++++++++++-
>   src/Makefile.am       |  9 ++++++++-
>   test/Makefile.am      |  2 +-
>   test/main.cpp         |  4 ++--
>   8 files changed, 85 insertions(+), 7 deletions(-)
>   create mode 100644 src/GoogleDrive.cpp
>   create mode 100644 src/GoogleDrive.h
>
> diff --git a/configure.ac b/configure.ac
> index 7c07e14..b152a82 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -4,9 +4,11 @@ AC_CONFIG_MACRO_DIRS([m4])
>   LT_INIT
>
>   AC_PROG_CXX
> -

Please try to avoid unrelated white space changes

>   AX_CXX_COMPILE_STDCXX_11
>
> +PKG_CHECK_MODULES([libcurlpp], [curlpp], [have_libcurlpp=yes], [have_libcurlpp=no])
> +AM_CONDITIONAL([libcurlpp], [test "$have_libcurlpp" = "yes"])
> +

This should be a separated patch, that simply adds libcurlpp as a 
depencendy.
Also, for the record, I don't think we should care about systems that 
don't have libcurlpp for now.
Some time in the future, we will introduce a contrib system to build our 
dependencies for systems that don't package those.

>   AC_CONFIG_FILES([
>     Makefile
>     src/Makefile
> diff --git a/src/GoogleDrive.cpp b/src/GoogleDrive.cpp
> new file mode 100644
> index 0000000..f2ac437
> --- /dev/null
> +++ b/src/GoogleDrive.cpp
> @@ -0,0 +1,27 @@
> +#include "GoogleDrive.h"
> +
> +#include <curlpp/Easy.hpp>
> +#include <curlpp/Options.hpp>
> +#include <sstream>
> +
> +using namespace curlpp::options;
> +
> +namespace cloudstorage {
> +
> +GoogleDrive::GoogleDrive() {
> +  curlpp::Easy request;
> +  std::stringstream stream;
> +  curlpp::options::WriteStream ws(&stream);
> +  request.setOpt<Url>("https://www.googleapis.com/auth/drive");
> +  request.setOpt(ws);
> +  request.perform();
> +  assert(stream.str() == "drive");
> +}
> +
> +// TODO
> +std::vector<ICloudStorage::File> GoogleDrive::listDirectory(
> +    const std::string& path) const {
> +  return {};
> +}
> +
> +}  // namespace cloudstorage
> diff --git a/src/GoogleDrive.h b/src/GoogleDrive.h
> new file mode 100644
> index 0000000..255f4e6
> --- /dev/null
> +++ b/src/GoogleDrive.h
> @@ -0,0 +1,18 @@
> +#ifndef GOOGLEDRIVE_H
> +#define GOOGLEDRIVE_H
> +
> +#include "ICloudStorage.h"
> +
> +namespace cloudstorage {
> +
> +class GoogleDrive : public ICloudStorage {
> + public:
> +  GoogleDrive();
> +
> +  std::vector<File> listDirectory(const std::string& path) const;
> + private:
> +};
> +
> +}  // namespace cloudstorage
> +
> +#endif
> diff --git a/src/ICloudStorage.cpp b/src/ICloudStorage.cpp
> index 4296881..cd1cd6b 100644
> --- a/src/ICloudStorage.cpp
> +++ b/src/ICloudStorage.cpp
> @@ -1,7 +1,19 @@
>   #include "ICloudStorage.h"
>
> +#include <curlpp/cURLpp.hpp>
> +
>   namespace cloudstorage {
>
> -ICloudStorage::ICloudStorage() {}
> +int ICloudStorage::storage_count_;

That doesn't seem thread safe at all

> +
> +ICloudStorage::ICloudStorage() {
> +  if (storage_count_ == 0) curlpp::initialize();
> +  storage_count_++;
> +}
> +
> +ICloudStorage::~ICloudStorage() {
> +  storage_count_--;
> +  if (storage_count_ == 0) curlpp::terminate();
> +}
>
>   };  //  namespace cloudstorage
> diff --git a/src/ICloudStorage.h b/src/ICloudStorage.h
> index 19a537b..d4407fe 100644
> --- a/src/ICloudStorage.h
> +++ b/src/ICloudStorage.h
> @@ -1,14 +1,26 @@
>   #ifndef ICLOUDSTORAGE_H
>   #define ICLOUDSTORAGE_H
>
> +#include <string>
> +#include <vector>
> +
>   namespace cloudstorage {
>
>   class ICloudStorage {
>    public:
> +  struct File {
> +    std::string filename_;
> +    bool is_directory_;
> +  };
> +
>     ICloudStorage();
> -  virtual ~ICloudStorage() = default;
> +  virtual ~ICloudStorage();
> +
> +  virtual std::vector<File> listDirectory(const std::string& path) const = 0;
>
>    private:
> +
> +  static int storage_count_;
>   };
>
>   }  //  namespace cloudstorage
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 6c59c77..7b7b8aa 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -1,4 +1,11 @@
>   ACLOCAL_AMFLAGS = -I m4
>
> +AM_CXXFLAGS = $(libcurlpp_CXXFLAGS)
> +
>   lib_LTLIBRARIES = libcloudstorage.la
> -libcloudstorage_la_SOURCES = ICloudStorage.cpp
> +libcloudstorage_la_SOURCES = \
> +	ICloudStorage.cpp ICloudStorage.h \
> +	GoogleDrive.cpp GoogleDrive.h
> +
> +libcloudstorage_la_LIBADD = $(libcurlpp_LIBS)
> +
> diff --git a/test/Makefile.am b/test/Makefile.am
> index 12980db..be324ef 100644
> --- a/test/Makefile.am
> +++ b/test/Makefile.am
> @@ -1,6 +1,6 @@
>   ACLOCAL_AMFLAGS = -I m4
>
> -AM_LDFLAGS = $(top_srcdir)/src/libcloudstorage.la
> +AM_LDFLAGS =  $(top_srcdir)/src/libcloudstorage.la
>   AM_CXXFLAGS = -I$(top_srcdir)/src
>
>   check_PROGRAMS = main
> diff --git a/test/main.cpp b/test/main.cpp
> index e75b175..c31ac52 100644
> --- a/test/main.cpp
> +++ b/test/main.cpp
> @@ -1,6 +1,6 @@
> -#include <ICloudStorage.h>
> +#include <GoogleDrive.h>
>
>   int main() {
> -  cloudstorage::ICloudStorage obj;
> +  cloudstorage::GoogleDrive gdrive;
>     return 0;
>   }
>



More information about the Vlmc-devel mailing list