{"action":"created","comment":{"url":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/comments/238885838","pull_request_review_id":181537653,"id":238885838,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzODg4NTgzOA==","diff_hunk":"@@ -0,0 +1,490 @@\n+// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n+//\n+// Licensed under the Apache License, Version 2.0 (the \"License\");\n+// you may not use this file except in compliance with the License.\n+// You may obtain a copy of the License at\n+//\n+//     http://www.apache.org/licenses/LICENSE-2.0\n+//\n+// Unless required by applicable law or agreed to in writing, software\n+// distributed under the License is distributed on an \"AS IS\" BASIS,\n+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+// See the License for the specific language governing permissions and\n+// limitations under the License.\n+\n+#include <string.h>\n+\n+#include <map>\n+#include <set>\n+#include <string>\n+#include <functional>\n+#include <utility>\n+\n+#include \"rcutils/allocator.h\"\n+#include \"rcutils/error_handling.h\"\n+#include \"rcutils/logging_macros.h\"\n+#include \"rcutils/strdup.h\"\n+#include \"rcutils/types.h\"\n+\n+#include \"rmw/allocators.h\"\n+#include \"rmw/convert_rcutils_ret_to_rmw_ret.h\"\n+#include \"rmw/error_handling.h\"\n+#include \"rmw/get_topic_names_and_types.h\"\n+#include \"rmw/impl/cpp/macros.hpp\"\n+#include \"rmw/names_and_types.h\"\n+#include \"rmw/rmw.h\"\n+\n+#include \"demangle.hpp\"\n+#include \"namespace_prefix.hpp\"\n+#include \"rmw_fastrtps_shared_cpp/custom_participant_info.hpp\"\n+#include \"rmw_fastrtps_shared_cpp/rmw_common.hpp\"\n+\n+#include \"reader_info.hpp\"\n+#include \"writer_info.hpp\"\n+#include \"types/topic_cache.hpp\"\n+\n+namespace rmw_fastrtps_shared_cpp\n+{\n+\n+constexpr char kLoggerTag[] = \"rmw_fastrtps_shared_cpp\";\n+\n+/**\n+ * Get the guid that corresponds to the nodeand namespace.\n+ *\n+ * @param node to discover other participants with\n+ * @param node_name of the desired node\n+ * @param node_namespace of the desired node\n+ * @param guid [out] result\n+ * @return RMW_RET_ERROR if unable to find guid\n+ * @return RMW_RET_OK if guid is available\n+ */\n+rmw_ret_t __get_guid_by_name(\n+  const rmw_node_t * node, const char * node_name,\n+  const char * node_namespace, GUID_t & guid)\n+{\n+  auto impl = static_cast<CustomParticipantInfo *>(node->data);\n+  if (strcmp(node->name, node_name) == 0) {\n+    guid = impl->participant->getGuid();\n+  } else {\n+    std::set<GUID_t> nodes_in_desired_namespace;\n+    auto namespaces = impl->listener->discovered_namespaces;\n+    for (auto & guid_to_namespace : impl->listener->discovered_namespaces) {\n+      if (strcmp(guid_to_namespace.second.c_str(), node_namespace) == 0) {\n+        nodes_in_desired_namespace.insert(guid_to_namespace.first);\n+      }\n+    }\n+\n+    auto guid_node_pair = std::find_if(impl->listener->discovered_names.begin(),\n+        impl->listener->discovered_names.end(),\n+        [node_name, &nodes_in_desired_namespace](std::pair<const GUID_t, std::string> pair) {\n+          return strcmp(pair.second.c_str(), node_name) == 0 &&\n+          nodes_in_desired_namespace.find(pair.first) != nodes_in_desired_namespace.end();\n+        });\n+\n+    if (guid_node_pair == impl->listener->discovered_names.end()) {\n+      RCUTILS_LOG_ERROR_NAMED(\n+        kLoggerTag,\n+        \"Unable to find GUID for node: %s\", node_name);\n+      RMW_SET_ERROR_MSG(\"Unable to find GUID for node \");\n+      return RMW_RET_ERROR;\n+    }\n+    guid = guid_node_pair->first;\n+  }\n+  return RMW_RET_OK;\n+}\n+\n+/**\n+ * Validate the input data of node_info_and_types functions.\n+ *\n+ * @return RMW_RET_INVALID_ARGUMENT for null input args\n+ * @return RMW_RET_ERROR if identifier is not the same as the input node\n+ * @return RMW_RET_OK if all input is valid\n+ */\n+rmw_ret_t __validate_input(\n+  const char * identifier,\n+  const rmw_node_t * node,\n+  rcutils_allocator_t * allocator,\n+  const char * node_name,\n+  const char * node_namespace,\n+  rmw_names_and_types_t * topic_names_and_types)\n+{\n+  if (!allocator) {\n+    RMW_SET_ERROR_MSG(\"allocator is null\");\n+    return RMW_RET_INVALID_ARGUMENT;\n+  }\n+  if (!node) {\n+    RMW_SET_ERROR_MSG(\"null node handle\");\n+    return RMW_RET_INVALID_ARGUMENT;\n+  }\n+\n+  if (!node_name) {\n+    RMW_SET_ERROR_MSG(\"null node name\");\n+    return RMW_RET_INVALID_ARGUMENT;\n+  }\n+\n+  if (!node_namespace) {\n+    RMW_SET_ERROR_MSG(\"null node namespace\");\n+    return RMW_RET_INVALID_ARGUMENT;\n+  }\n+\n+  rmw_ret_t ret = rmw_names_and_types_check_zero(topic_names_and_types);\n+  if (ret != RMW_RET_OK) {\n+    return ret;\n+  }\n+\n+  // Get participant pointer from node\n+  if (node->implementation_identifier != identifier) {\n+    RMW_SET_ERROR_MSG(\"node handle not from this implementation\");\n+    return RMW_RET_ERROR;\n+  }\n+  return RMW_RET_OK;\n+}\n+\n+/**\n+ * Access the slave Listeners, which are the ones that have the topicnamesandtypes member\n+ * Get info from publisher and subscriber\n+ * Combined results from the two lists\n+ *\n+ * @param topic_cache cache with topic information\n+ * @param topics [out] resulting topics\n+ * @param node_guid_ to find information for\n+ * @param no_demangle true if demangling will not occur\n+ */\n+void\n+__accumulate_topics(\n+  const LockedObject<TopicCache> & topic_cache,\n+  std::map<std::string, std::set<std::string>> & topics,\n+  const GUID_t & node_guid_,\n+  bool no_demangle)\n+{\n+  std::lock_guard<std::mutex> guard(topic_cache.getMutex());\n+  const auto & node_topics = topic_cache.getParticipantToTopics().find(node_guid_);\n+  if (node_topics == topic_cache.getParticipantToTopics().end()) {\n+    RCUTILS_LOG_DEBUG_NAMED(\n+      kLoggerTag,\n+      \"No topics found for node\");\n+    return;\n+  }\n+  for (auto & topic_pair : node_topics->second) {\n+    if (!no_demangle && _get_ros_prefix_if_exists(topic_pair.first) != ros_topic_prefix) {\n+      // if we are demangling and this is not prefixed with rt/, skip it\n+      continue;\n+    }\n+    RCUTILS_LOG_DEBUG_NAMED(\n+      kLoggerTag,\n+      \"accumulate_topics: Found topic %s\",\n+      topic_pair.first.c_str());\n+\n+    topics[topic_pair.first].insert(topic_pair.second.begin(),\n+      topic_pair.second.end());\n+  }\n+}\n+\n+/**\n+ * Copy topic data to results\n+ *\n+ * @param topics to copy over\n+ * @param allocator to use\n+ * @param no_demangle true if demangling will not occur\n+ * @param topic_names_and_types [out] final rmw result\n+ * @return RMW_RET_OK if successful\n+ */\n+rmw_ret_t\n+__copy_data_to_results(\n+  const std::map<std::string, std::set<std::string>> & topics,\n+  rcutils_allocator_t * allocator,\n+  bool no_demangle,\n+  rmw_names_and_types_t * topic_names_and_types)\n+{\n+  // Copy data to results handle\n+  if (topics.size() > 0) {\n+    // Setup string array to store names\n+    rmw_ret_t rmw_ret = rmw_names_and_types_init(topic_names_and_types, topics.size(), allocator);\n+    if (rmw_ret != RMW_RET_OK) {\n+      return rmw_ret;\n+    }\n+    // Setup cleanup function, in case of failure below\n+    auto fail_cleanup = [&topic_names_and_types]() {\n+        rmw_ret_t rmw_ret = rmw_names_and_types_fini(topic_names_and_types);\n+        if (rmw_ret != RMW_RET_OK) {\n+          RCUTILS_LOG_ERROR_NAMED(\n+            kLoggerTag,\n+            \"error during report of error: %s\", rmw_get_error_string());\n+        }\n+      };\n+    // Setup demangling functions based on no_demangle option\n+    auto demangle_topic = _demangle_if_ros_topic;\n+    auto demangle_type = _demangle_if_ros_type;\n+    if (no_demangle) {\n+      auto noop = [](const std::__cxx11::string & in) {","path":"rmw_fastrtps_shared_cpp/src/rmw_node_info_and_types.cpp","position":null,"original_position":219,"commit_id":"9ea473ac98b5a4f1861a783b55140f48632a1758","original_commit_id":"0e568656f3ac0cabc027b28e06679612ac1aaa24","user":{"login":"ross-desmond","id":44277324,"node_id":"MDQ6VXNlcjQ0Mjc3MzI0","avatar_url":"https://avatars2.githubusercontent.com/u/44277324?v=4","gravatar_id":"","url":"https://api.github.com/users/ross-desmond","html_url":"https://github.com/ross-desmond","followers_url":"https://api.github.com/users/ross-desmond/followers","following_url":"https://api.github.com/users/ross-desmond/following{/other_user}","gists_url":"https://api.github.com/users/ross-desmond/gists{/gist_id}","starred_url":"https://api.github.com/users/ross-desmond/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ross-desmond/subscriptions","organizations_url":"https://api.github.com/users/ross-desmond/orgs","repos_url":"https://api.github.com/users/ross-desmond/repos","events_url":"https://api.github.com/users/ross-desmond/events{/privacy}","received_events_url":"https://api.github.com/users/ross-desmond/received_events","type":"User","site_admin":false},"body":"Awesome, I went to change this and found it already there :)","created_at":"2018-12-04T23:55:31Z","updated_at":"2018-12-04T23:55:31Z","html_url":"https://github.com/ros2/rmw_fastrtps/pull/236#discussion_r238885838","pull_request_url":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/comments/238885838"},"html":{"href":"https://github.com/ros2/rmw_fastrtps/pull/236#discussion_r238885838"},"pull_request":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236"}},"in_reply_to_id":238870046},"pull_request":{"url":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236","id":231684165,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMxNjg0MTY1","html_url":"https://github.com/ros2/rmw_fastrtps/pull/236","diff_url":"https://github.com/ros2/rmw_fastrtps/pull/236.diff","patch_url":"https://github.com/ros2/rmw_fastrtps/pull/236.patch","issue_url":"https://api.github.com/repos/ros2/rmw_fastrtps/issues/236","number":236,"state":"open","locked":false,"title":"Add topic cache object for managing topic relations","user":{"login":"ross-desmond","id":44277324,"node_id":"MDQ6VXNlcjQ0Mjc3MzI0","avatar_url":"https://avatars2.githubusercontent.com/u/44277324?v=4","gravatar_id":"","url":"https://api.github.com/users/ross-desmond","html_url":"https://github.com/ross-desmond","followers_url":"https://api.github.com/users/ross-desmond/followers","following_url":"https://api.github.com/users/ross-desmond/following{/other_user}","gists_url":"https://api.github.com/users/ross-desmond/gists{/gist_id}","starred_url":"https://api.github.com/users/ross-desmond/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ross-desmond/subscriptions","organizations_url":"https://api.github.com/users/ross-desmond/orgs","repos_url":"https://api.github.com/users/ross-desmond/repos","events_url":"https://api.github.com/users/ross-desmond/events{/privacy}","received_events_url":"https://api.github.com/users/ross-desmond/received_events","type":"User","site_admin":false},"body":"* Add topic cache object to maintain participant relationship\r\n* Separate responsibility of maintaining cached data from listener\r\n* Use lock_guard over manual mutex lock\r\n* Use c++14 functions to reduce code\r\n* Add debug statements\r\n* Add lookup of topics for input node\r\n* Remove unnecessary logging\r\n* Add namespace to graph functions","created_at":"2018-11-16T23:34:43Z","updated_at":"2018-12-04T23:55:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"eccfca532b92d7c7491280a8a9345b1af9d4c566","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":353278945,"node_id":"MDU6TGFiZWwzNTMyNzg5NDU=","url":"https://api.github.com/repos/ros2/rmw_fastrtps/labels/in%20review","name":"in review","color":"388be2","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236/commits","review_comments_url":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236/comments","review_comment_url":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ros2/rmw_fastrtps/issues/236/comments","statuses_url":"https://api.github.com/repos/ros2/rmw_fastrtps/statuses/9ea473ac98b5a4f1861a783b55140f48632a1758","head":{"label":"ross-desmond:node_graph_impl","ref":"node_graph_impl","sha":"9ea473ac98b5a4f1861a783b55140f48632a1758","user":{"login":"ross-desmond","id":44277324,"node_id":"MDQ6VXNlcjQ0Mjc3MzI0","avatar_url":"https://avatars2.githubusercontent.com/u/44277324?v=4","gravatar_id":"","url":"https://api.github.com/users/ross-desmond","html_url":"https://github.com/ross-desmond","followers_url":"https://api.github.com/users/ross-desmond/followers","following_url":"https://api.github.com/users/ross-desmond/following{/other_user}","gists_url":"https://api.github.com/users/ross-desmond/gists{/gist_id}","starred_url":"https://api.github.com/users/ross-desmond/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ross-desmond/subscriptions","organizations_url":"https://api.github.com/users/ross-desmond/orgs","repos_url":"https://api.github.com/users/ross-desmond/repos","events_url":"https://api.github.com/users/ross-desmond/events{/privacy}","received_events_url":"https://api.github.com/users/ross-desmond/received_events","type":"User","site_admin":false},"repo":{"id":157929811,"node_id":"MDEwOlJlcG9zaXRvcnkxNTc5Mjk4MTE=","name":"rmw_fastrtps","full_name":"ross-desmond/rmw_fastrtps","private":false,"owner":{"login":"ross-desmond","id":44277324,"node_id":"MDQ6VXNlcjQ0Mjc3MzI0","avatar_url":"https://avatars2.githubusercontent.com/u/44277324?v=4","gravatar_id":"","url":"https://api.github.com/users/ross-desmond","html_url":"https://github.com/ross-desmond","followers_url":"https://api.github.com/users/ross-desmond/followers","following_url":"https://api.github.com/users/ross-desmond/following{/other_user}","gists_url":"https://api.github.com/users/ross-desmond/gists{/gist_id}","starred_url":"https://api.github.com/users/ross-desmond/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ross-desmond/subscriptions","organizations_url":"https://api.github.com/users/ross-desmond/orgs","repos_url":"https://api.github.com/users/ross-desmond/repos","events_url":"https://api.github.com/users/ross-desmond/events{/privacy}","received_events_url":"https://api.github.com/users/ross-desmond/received_events","type":"User","site_admin":false},"html_url":"https://github.com/ross-desmond/rmw_fastrtps","description":"Implementation of the ROS Middleware (rmw) Interface using eProsima's Fast RTPS.","fork":true,"url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps","forks_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/forks","keys_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/teams","hooks_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/hooks","issue_events_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/issues/events{/number}","events_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/events","assignees_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/assignees{/user}","branches_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/branches{/branch}","tags_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/tags","blobs_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/git/refs{/sha}","trees_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/statuses/{sha}","languages_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/languages","stargazers_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/stargazers","contributors_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/contributors","subscribers_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/subscribers","subscription_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/subscription","commits_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/commits{/sha}","git_commits_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/git/commits{/sha}","comments_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/comments{/number}","issue_comment_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/issues/comments{/number}","contents_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/contents/{+path}","compare_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/merges","archive_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/downloads","issues_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/issues{/number}","pulls_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/pulls{/number}","milestones_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/milestones{/number}","notifications_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/labels{/name}","releases_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/releases{/id}","deployments_url":"https://api.github.com/repos/ross-desmond/rmw_fastrtps/deployments","created_at":"2018-11-16T22:49:03Z","updated_at":"2018-11-16T22:49:05Z","pushed_at":"2018-12-04T23:12:12Z","git_url":"git://github.com/ross-desmond/rmw_fastrtps.git","ssh_url":"git@github.com:ross-desmond/rmw_fastrtps.git","clone_url":"https://github.com/ross-desmond/rmw_fastrtps.git","svn_url":"https://github.com/ross-desmond/rmw_fastrtps","homepage":"","size":699,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ros2:master","ref":"master","sha":"fae928385b96e0f3ca19c89142cfaf4e509ffbdb","user":{"login":"ros2","id":3979232,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5NzkyMzI=","avatar_url":"https://avatars1.githubusercontent.com/u/3979232?v=4","gravatar_id":"","url":"https://api.github.com/users/ros2","html_url":"https://github.com/ros2","followers_url":"https://api.github.com/users/ros2/followers","following_url":"https://api.github.com/users/ros2/following{/other_user}","gists_url":"https://api.github.com/users/ros2/gists{/gist_id}","starred_url":"https://api.github.com/users/ros2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros2/subscriptions","organizations_url":"https://api.github.com/users/ros2/orgs","repos_url":"https://api.github.com/users/ros2/repos","events_url":"https://api.github.com/users/ros2/events{/privacy}","received_events_url":"https://api.github.com/users/ros2/received_events","type":"Organization","site_admin":false},"repo":{"id":35552300,"node_id":"MDEwOlJlcG9zaXRvcnkzNTU1MjMwMA==","name":"rmw_fastrtps","full_name":"ros2/rmw_fastrtps","private":false,"owner":{"login":"ros2","id":3979232,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5NzkyMzI=","avatar_url":"https://avatars1.githubusercontent.com/u/3979232?v=4","gravatar_id":"","url":"https://api.github.com/users/ros2","html_url":"https://github.com/ros2","followers_url":"https://api.github.com/users/ros2/followers","following_url":"https://api.github.com/users/ros2/following{/other_user}","gists_url":"https://api.github.com/users/ros2/gists{/gist_id}","starred_url":"https://api.github.com/users/ros2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros2/subscriptions","organizations_url":"https://api.github.com/users/ros2/orgs","repos_url":"https://api.github.com/users/ros2/repos","events_url":"https://api.github.com/users/ros2/events{/privacy}","received_events_url":"https://api.github.com/users/ros2/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/ros2/rmw_fastrtps","description":"Implementation of the ROS Middleware (rmw) Interface using eProsima's Fast RTPS.","fork":false,"url":"https://api.github.com/repos/ros2/rmw_fastrtps","forks_url":"https://api.github.com/repos/ros2/rmw_fastrtps/forks","keys_url":"https://api.github.com/repos/ros2/rmw_fastrtps/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ros2/rmw_fastrtps/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ros2/rmw_fastrtps/teams","hooks_url":"https://api.github.com/repos/ros2/rmw_fastrtps/hooks","issue_events_url":"https://api.github.com/repos/ros2/rmw_fastrtps/issues/events{/number}","events_url":"https://api.github.com/repos/ros2/rmw_fastrtps/events","assignees_url":"https://api.github.com/repos/ros2/rmw_fastrtps/assignees{/user}","branches_url":"https://api.github.com/repos/ros2/rmw_fastrtps/branches{/branch}","tags_url":"https://api.github.com/repos/ros2/rmw_fastrtps/tags","blobs_url":"https://api.github.com/repos/ros2/rmw_fastrtps/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ros2/rmw_fastrtps/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ros2/rmw_fastrtps/git/refs{/sha}","trees_url":"https://api.github.com/repos/ros2/rmw_fastrtps/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ros2/rmw_fastrtps/statuses/{sha}","languages_url":"https://api.github.com/repos/ros2/rmw_fastrtps/languages","stargazers_url":"https://api.github.com/repos/ros2/rmw_fastrtps/stargazers","contributors_url":"https://api.github.com/repos/ros2/rmw_fastrtps/contributors","subscribers_url":"https://api.github.com/repos/ros2/rmw_fastrtps/subscribers","subscription_url":"https://api.github.com/repos/ros2/rmw_fastrtps/subscription","commits_url":"https://api.github.com/repos/ros2/rmw_fastrtps/commits{/sha}","git_commits_url":"https://api.github.com/repos/ros2/rmw_fastrtps/git/commits{/sha}","comments_url":"https://api.github.com/repos/ros2/rmw_fastrtps/comments{/number}","issue_comment_url":"https://api.github.com/repos/ros2/rmw_fastrtps/issues/comments{/number}","contents_url":"https://api.github.com/repos/ros2/rmw_fastrtps/contents/{+path}","compare_url":"https://api.github.com/repos/ros2/rmw_fastrtps/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ros2/rmw_fastrtps/merges","archive_url":"https://api.github.com/repos/ros2/rmw_fastrtps/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ros2/rmw_fastrtps/downloads","issues_url":"https://api.github.com/repos/ros2/rmw_fastrtps/issues{/number}","pulls_url":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls{/number}","milestones_url":"https://api.github.com/repos/ros2/rmw_fastrtps/milestones{/number}","notifications_url":"https://api.github.com/repos/ros2/rmw_fastrtps/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ros2/rmw_fastrtps/labels{/name}","releases_url":"https://api.github.com/repos/ros2/rmw_fastrtps/releases{/id}","deployments_url":"https://api.github.com/repos/ros2/rmw_fastrtps/deployments","created_at":"2015-05-13T14:00:18Z","updated_at":"2018-11-30T05:33:38Z","pushed_at":"2018-12-04T23:12:14Z","git_url":"git://github.com/ros2/rmw_fastrtps.git","ssh_url":"git@github.com:ros2/rmw_fastrtps.git","clone_url":"https://github.com/ros2/rmw_fastrtps.git","svn_url":"https://github.com/ros2/rmw_fastrtps","homepage":"","size":666,"stargazers_count":18,"watchers_count":18,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":33,"mirror_url":null,"archived":false,"open_issues_count":16,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":33,"open_issues":16,"watchers":18,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236"},"html":{"href":"https://github.com/ros2/rmw_fastrtps/pull/236"},"issue":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/issues/236"},"comments":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/issues/236/comments"},"review_comments":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236/comments"},"review_comment":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/pulls/236/commits"},"statuses":{"href":"https://api.github.com/repos/ros2/rmw_fastrtps/statuses/9ea473ac98b5a4f1861a783b55140f48632a1758"}},"author_association":"NONE"}}
{"actor":{"display_login":"ross-desmond"}}