You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Michael Park (JIRA)" <ji...@apache.org> on 2015/09/10 11:03:48 UTC

[jira] [Created] (MESOS-3405) Add JSON::protobuf for google::protobuf::RepeatedPtrField.

Michael Park created MESOS-3405:
-----------------------------------

             Summary: Add JSON::protobuf for google::protobuf::RepeatedPtrField.
                 Key: MESOS-3405
                 URL: https://issues.apache.org/jira/browse/MESOS-3405
             Project: Mesos
          Issue Type: Task
          Components: stout
            Reporter: Michael Park


Currently, {{stout/protobuf.hpp}} provides a {{JSON::Protobuf}} utility which converts a {{google::protobuf::Message}} into a {{JSON::Object}}.

We should add the support for {{google::protobuf::RepeatedPtrField<T>}} by introducing overloaded functions.

{code}
namespace JSON {
  Object protobuf(const google::protobuf::Message& message)
  {
    Object object;
    /* Move the body of JSON::Protobuf constructor here. */
    return object;
  }

  template <typename T>
  Array protobuf(const google::protobuf::RepeatedPtrField<T>& repeated)
  {
    static_assert(std::is_convertible<T*, google::protobuf::Message*>::value,
                  "T must be a google::protobuf::Message");
    JSON::Array array;
    array.values.reserve(repeated.size());
    foreach (const T& elem, repeated) {
      array.values.push_back(JSON::Protobuf(elem));
    }
    return array;
  }
}
{code}

The new {{RepeatedPtrField}} version can be used in at least the following places:
* {{src/common/http.cpp}}
* {{src/master/http.cpp}}
* {{src/slave/containerizer/mesos/containerizer.cpp}}
* {{src/tests/reservation_endpoints_tests.cpp}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)