{"action":"created","comment":{"url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/comments/181409603","pull_request_review_id":112037440,"id":181409603,"diff_hunk":"@@ -0,0 +1,842 @@\n+/*\n+ * Copyright (c) 2008-2018, Hazelcast, Inc. 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+//\n+// Created by sancar koyunlu on 8/21/13.\n+\n+#include <boost/foreach.hpp>\n+\n+#include \"hazelcast/client/impl/ExecutionCallback.h\"\n+#include \"hazelcast/client/LifecycleEvent.h\"\n+#include \"hazelcast/client/connection/DefaultClientConnectionStrategy.h\"\n+#include \"hazelcast/client/connection/AddressProvider.h\"\n+#include \"hazelcast/util/impl/SimpleExecutorService.h\"\n+#include \"hazelcast/client/spi/impl/ClientInvocation.h\"\n+#include \"hazelcast/util/Util.h\"\n+#include \"hazelcast/client/protocol/AuthenticationStatus.h\"\n+#include \"hazelcast/client/exception/AuthenticationException.h\"\n+#include \"hazelcast/client/exception/AuthenticationException.h\"\n+#include \"hazelcast/client/connection/ClientConnectionManagerImpl.h\"\n+#include \"hazelcast/client/connection/ConnectionListener.h\"\n+#include \"hazelcast/client/connection/Connection.h\"\n+#include \"hazelcast/client/spi/impl/ClientClusterServiceImpl.h\"\n+#include \"hazelcast/client/spi/ClientContext.h\"\n+#include \"hazelcast/client/spi/impl/ClientExecutionServiceImpl.h\"\n+#include \"hazelcast/client/spi/ClientClusterService.h\"\n+#include \"hazelcast/client/serialization/pimpl/SerializationService.h\"\n+#include \"hazelcast/client/protocol/UsernamePasswordCredentials.h\"\n+#include \"hazelcast/client/protocol/codec/ClientAuthenticationCodec.h\"\n+#include \"hazelcast/client/protocol/codec/ClientAuthenticationCustomCodec.h\"\n+#include \"hazelcast/client/protocol/codec/ErrorCodec.h\"\n+#include \"hazelcast/client/ClientConfig.h\"\n+#include \"hazelcast/client/exception/InstanceNotActiveException.h\"\n+#include \"hazelcast/client/spi/LifecycleService.h\"\n+#include \"hazelcast/util/Thread.h\"\n+#include \"hazelcast/util/Executor.h\"\n+#include \"hazelcast/client/SocketInterceptor.h\"\n+#include \"hazelcast/client/connection/AuthenticationFuture.h\"\n+#include \"hazelcast/client/config/ClientNetworkConfig.h\"\n+#include \"hazelcast/client/ClientProperties.h\"\n+#include \"hazelcast/client/connection/HeartbeatManager.h\"\n+\n+#if  defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)\n+#pragma warning(push)\n+#pragma warning(disable: 4355) //for strerror\n+#endif\n+\n+namespace hazelcast {\n+    namespace client {\n+        namespace connection {\n+            int ClientConnectionManagerImpl::DEFAULT_CONNECTION_ATTEMPT_LIMIT_SYNC = 2;\n+            int ClientConnectionManagerImpl::DEFAULT_CONNECTION_ATTEMPT_LIMIT_ASYNC = 20;\n+\n+            ClientConnectionManagerImpl::ClientConnectionManagerImpl(spi::ClientContext &client,\n+                                                                     const boost::shared_ptr<AddressTranslator> &addressTranslator,\n+                                                                     const std::vector<boost::shared_ptr<AddressProvider> > &addressProviders)\n+                    : logger(util::ILogger::getLogger()), client(client),\n+                      socketInterceptor(client.getClientConfig().getSocketInterceptor()), inSelector(*this),\n+                      outSelector(*this),\n+                      inSelectorThread(boost::shared_ptr<util::Runnable>(new util::RunnableDelegator(inSelector))),\n+                      outSelectorThread(boost::shared_ptr<util::Runnable>(new util::RunnableDelegator(outSelector))),\n+                      executionService(client.getClientExecutionService()),\n+                      translator(addressTranslator), connectionIdCounter(0), socketFactory(client) {\n+                config::ClientNetworkConfig &networkConfig = client.getClientConfig().getNetworkConfig();\n+\n+                int64_t connTimeout = networkConfig.getConnectionTimeout();\n+                connectionTimeoutMillis = connTimeout == 0 ? INT64_MAX : connTimeout;\n+\n+                credentials = client.getClientConfig().getCredentials();\n+\n+                connectionStrategy = initializeStrategy(client);\n+\n+                clusterConnectionExecutor = createSingleThreadExecutorService(client);\n+                shutdownExecutor = util::Executors::newSingleThreadExecutor(\n+                        client.getName() + \".clientShutdown-\");\n+\n+                shuffleMemberList = client.getClientProperties().getShuffleMemberList().getBoolean();\n+\n+                ClientConnectionManagerImpl::addressProviders = addressProviders;\n+\n+                connectionAttemptPeriod = networkConfig.getConnectionAttemptPeriod();\n+\n+                int connAttemptLimit = networkConfig.getConnectionAttemptLimit();\n+                bool isAsync = client.getClientConfig().getConnectionStrategyConfig().isAsyncStart();\n+\n+                if (connAttemptLimit < 0) {\n+                    this->connectionAttemptLimit = isAsync ? DEFAULT_CONNECTION_ATTEMPT_LIMIT_ASYNC\n+                                                           : DEFAULT_CONNECTION_ATTEMPT_LIMIT_SYNC;\n+                } else {\n+                    this->connectionAttemptLimit = connAttemptLimit == 0 ? INT32_MAX : connAttemptLimit;\n+                }\n+\n+            }\n+\n+            bool ClientConnectionManagerImpl::start() {\n+                util::LockGuard guard(lock);\n+                if (alive) {\n+                    return true;\n+                }\n+                alive = true;\n+\n+                bool result = socketFactory.start();\n+\n+                socketInterceptor = client.getClientConfig().getSocketInterceptor();\n+\n+                if (!inSelector.start()) {\n+                    return false;\n+                }\n+                if (!outSelector.start()) {\n+                    return false;\n+                }\n+\n+                startEventLoopGroup();\n+                heartbeat.reset(new HeartbeatManager(client));\n+                heartbeat->start();\n+                addConnectionHeartbeatListener(boost::shared_ptr<spi::impl::ConnectionHeartbeatListener>(\n+                        new spi::impl::ConnectionHeartbeatListenerDelegator(*this)));\n+                connectionStrategy->start();\n+\n+                return result;\n+            }\n+\n+            void ClientConnectionManagerImpl::shutdown() {\n+                util::LockGuard guard(lock);\n+                if (!alive) {\n+                    return;\n+                }\n+                alive = false;\n+\n+                // close connections\n+                BOOST_FOREACH(boost::shared_ptr<Connection> connection, activeConnections.values()) {\n+                                // prevent any exceptions\n+                                util::IOUtil::closeResource(connection.get(), \"Hazelcast client is shutting down\");\n+                            }\n+\n+                spi::impl::ClientExecutionServiceImpl::shutdownExecutor(\"cluster\", *clusterConnectionExecutor, logger);\n+                stopEventLoopGroup();\n+                connectionListeners.clear();\n+                heartbeat->shutdown();\n+\n+                connectionStrategy->shutdown();\n+\n+\n+                if (alive.compareAndSet(true, false)) {\n+                    return;\n+                }\n+\n+                activeConnectionsFileDescriptors.clear();\n+                activeConnections.clear();\n+                socketConnections.clear();\n+            }\n+\n+            boost::shared_ptr<Connection>\n+            ClientConnectionManagerImpl::getOrConnect(const Address &address) {\n+                return getOrConnect(address, false);\n+            }\n+\n+            boost::shared_ptr<Connection> ClientConnectionManagerImpl::getOwnerConnection() {\n+                boost::shared_ptr<Address> address = ownerConnectionAddress;\n+                if (address.get() == NULL) {\n+                    return boost::shared_ptr<Connection>();\n+                }\n+                boost::shared_ptr<Connection> connection = getActiveConnection(*address);\n+                return connection;\n+\n+            }\n+\n+            boost::shared_ptr<Connection> ClientConnectionManagerImpl::connectAsOwner(const Address &address) {\n+                boost::shared_ptr<Connection> connection;\n+                try {\n+                    logger.info() << \"Trying to connect to \" << address << \" as owner member\";\n+                    connection = getOrConnect(address, true);\n+                    client.onClusterConnect(connection);\n+                    setOwnerConnectionAddress(boost::shared_ptr<Address>(new Address(connection->getRemoteEndpoint())));","path":"hazelcast/src/hazelcast/client/connection/ClientConnectionManagerImpl.cpp","position":183,"original_position":185,"commit_id":"d87f4f0c699b3a193c2ae032ee5b7fa787e237f3","original_commit_id":"46c5346f6efb14b9e5048469d711120888b9ab1a","user":{"login":"ihsandemir","id":7543261,"avatar_url":"https://avatars3.githubusercontent.com/u/7543261?v=4","gravatar_id":"","url":"https://api.github.com/users/ihsandemir","html_url":"https://github.com/ihsandemir","followers_url":"https://api.github.com/users/ihsandemir/followers","following_url":"https://api.github.com/users/ihsandemir/following{/other_user}","gists_url":"https://api.github.com/users/ihsandemir/gists{/gist_id}","starred_url":"https://api.github.com/users/ihsandemir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihsandemir/subscriptions","organizations_url":"https://api.github.com/users/ihsandemir/orgs","repos_url":"https://api.github.com/users/ihsandemir/repos","events_url":"https://api.github.com/users/ihsandemir/events{/privacy}","received_events_url":"https://api.github.com/users/ihsandemir/received_events","type":"User","site_admin":false},"body":"Done.","created_at":"2018-04-13T14:40:43Z","updated_at":"2018-04-13T14:40:43Z","html_url":"https://github.com/hazelcast/hazelcast-cpp-client/pull/392#discussion_r181409603","pull_request_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/comments/181409603"},"html":{"href":"https://github.com/hazelcast/hazelcast-cpp-client/pull/392#discussion_r181409603"},"pull_request":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392"}},"in_reply_to_id":180778386},"pull_request":{"url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392","id":179089740,"html_url":"https://github.com/hazelcast/hazelcast-cpp-client/pull/392","diff_url":"https://github.com/hazelcast/hazelcast-cpp-client/pull/392.diff","patch_url":"https://github.com/hazelcast/hazelcast-cpp-client/pull/392.patch","issue_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/issues/392","number":392,"state":"open","locked":false,"title":"Reimplemented all client services to work the same as in Java","user":{"login":"ihsandemir","id":7543261,"avatar_url":"https://avatars3.githubusercontent.com/u/7543261?v=4","gravatar_id":"","url":"https://api.github.com/users/ihsandemir","html_url":"https://github.com/ihsandemir","followers_url":"https://api.github.com/users/ihsandemir/followers","following_url":"https://api.github.com/users/ihsandemir/following{/other_user}","gists_url":"https://api.github.com/users/ihsandemir/gists{/gist_id}","starred_url":"https://api.github.com/users/ihsandemir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihsandemir/subscriptions","organizations_url":"https://api.github.com/users/ihsandemir/orgs","repos_url":"https://api.github.com/users/ihsandemir/repos","events_url":"https://api.github.com/users/ihsandemir/events{/privacy}","received_events_url":"https://api.github.com/users/ihsandemir/received_events","type":"User","site_admin":false},"body":"Reimplemented all client services (ClientConnectionManager, ClientPartitionService, ClientInvocationService, ClientClusterService) to work the same way as Java client services. Implemented new utility classes and new features such as repetable execution of tasks or delayed execution. Implements the client connection strategy. Changes the client work the same way as Java client with a single connection. More async behaviour as in Java so that IO threads are not blocked.","created_at":"2018-04-03T12:55:56Z","updated_at":"2018-04-13T14:40:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2d5f99c043ef2e5560cca889fa76eb63bfbb397a","assignee":{"login":"ihsandemir","id":7543261,"avatar_url":"https://avatars3.githubusercontent.com/u/7543261?v=4","gravatar_id":"","url":"https://api.github.com/users/ihsandemir","html_url":"https://github.com/ihsandemir","followers_url":"https://api.github.com/users/ihsandemir/followers","following_url":"https://api.github.com/users/ihsandemir/following{/other_user}","gists_url":"https://api.github.com/users/ihsandemir/gists{/gist_id}","starred_url":"https://api.github.com/users/ihsandemir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihsandemir/subscriptions","organizations_url":"https://api.github.com/users/ihsandemir/orgs","repos_url":"https://api.github.com/users/ihsandemir/repos","events_url":"https://api.github.com/users/ihsandemir/events{/privacy}","received_events_url":"https://api.github.com/users/ihsandemir/received_events","type":"User","site_admin":false},"assignees":[{"login":"ihsandemir","id":7543261,"avatar_url":"https://avatars3.githubusercontent.com/u/7543261?v=4","gravatar_id":"","url":"https://api.github.com/users/ihsandemir","html_url":"https://github.com/ihsandemir","followers_url":"https://api.github.com/users/ihsandemir/followers","following_url":"https://api.github.com/users/ihsandemir/following{/other_user}","gists_url":"https://api.github.com/users/ihsandemir/gists{/gist_id}","starred_url":"https://api.github.com/users/ihsandemir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihsandemir/subscriptions","organizations_url":"https://api.github.com/users/ihsandemir/orgs","repos_url":"https://api.github.com/users/ihsandemir/repos","events_url":"https://api.github.com/users/ihsandemir/events{/privacy}","received_events_url":"https://api.github.com/users/ihsandemir/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":276953674,"url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/labels/Type:%20Enhancement","name":"Type: Enhancement","color":"5319e7","default":false}],"milestone":{"url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/milestones/18","html_url":"https://github.com/hazelcast/hazelcast-cpp-client/milestone/18","labels_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/milestones/18/labels","id":2992579,"number":18,"title":"3.9.2","description":"","creator":{"login":"ihsandemir","id":7543261,"avatar_url":"https://avatars3.githubusercontent.com/u/7543261?v=4","gravatar_id":"","url":"https://api.github.com/users/ihsandemir","html_url":"https://github.com/ihsandemir","followers_url":"https://api.github.com/users/ihsandemir/followers","following_url":"https://api.github.com/users/ihsandemir/following{/other_user}","gists_url":"https://api.github.com/users/ihsandemir/gists{/gist_id}","starred_url":"https://api.github.com/users/ihsandemir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihsandemir/subscriptions","organizations_url":"https://api.github.com/users/ihsandemir/orgs","repos_url":"https://api.github.com/users/ihsandemir/repos","events_url":"https://api.github.com/users/ihsandemir/events{/privacy}","received_events_url":"https://api.github.com/users/ihsandemir/received_events","type":"User","site_admin":false},"open_issues":12,"closed_issues":17,"state":"open","created_at":"2017-12-21T08:54:10Z","updated_at":"2018-04-03T12:55:56Z","due_on":"2018-04-03T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392/commits","review_comments_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392/comments","review_comment_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/issues/392/comments","statuses_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/statuses/d87f4f0c699b3a193c2ae032ee5b7fa787e237f3","head":{"label":"ihsandemir:reImplementServices","ref":"reImplementServices","sha":"d87f4f0c699b3a193c2ae032ee5b7fa787e237f3","user":{"login":"ihsandemir","id":7543261,"avatar_url":"https://avatars3.githubusercontent.com/u/7543261?v=4","gravatar_id":"","url":"https://api.github.com/users/ihsandemir","html_url":"https://github.com/ihsandemir","followers_url":"https://api.github.com/users/ihsandemir/followers","following_url":"https://api.github.com/users/ihsandemir/following{/other_user}","gists_url":"https://api.github.com/users/ihsandemir/gists{/gist_id}","starred_url":"https://api.github.com/users/ihsandemir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihsandemir/subscriptions","organizations_url":"https://api.github.com/users/ihsandemir/orgs","repos_url":"https://api.github.com/users/ihsandemir/repos","events_url":"https://api.github.com/users/ihsandemir/events{/privacy}","received_events_url":"https://api.github.com/users/ihsandemir/received_events","type":"User","site_admin":false},"repo":{"id":45042631,"name":"hazelcast-cpp-client","full_name":"ihsandemir/hazelcast-cpp-client","owner":{"login":"ihsandemir","id":7543261,"avatar_url":"https://avatars3.githubusercontent.com/u/7543261?v=4","gravatar_id":"","url":"https://api.github.com/users/ihsandemir","html_url":"https://github.com/ihsandemir","followers_url":"https://api.github.com/users/ihsandemir/followers","following_url":"https://api.github.com/users/ihsandemir/following{/other_user}","gists_url":"https://api.github.com/users/ihsandemir/gists{/gist_id}","starred_url":"https://api.github.com/users/ihsandemir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ihsandemir/subscriptions","organizations_url":"https://api.github.com/users/ihsandemir/orgs","repos_url":"https://api.github.com/users/ihsandemir/repos","events_url":"https://api.github.com/users/ihsandemir/events{/privacy}","received_events_url":"https://api.github.com/users/ihsandemir/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ihsandemir/hazelcast-cpp-client","description":"Hazelcast C++ client ","fork":true,"url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client","forks_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/forks","keys_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/teams","hooks_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/hooks","issue_events_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/issues/events{/number}","events_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/events","assignees_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/assignees{/user}","branches_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/branches{/branch}","tags_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/tags","blobs_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/git/refs{/sha}","trees_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/statuses/{sha}","languages_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/languages","stargazers_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/stargazers","contributors_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/contributors","subscribers_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/subscribers","subscription_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/subscription","commits_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/commits{/sha}","git_commits_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/git/commits{/sha}","comments_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/comments{/number}","issue_comment_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/issues/comments{/number}","contents_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/contents/{+path}","compare_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/merges","archive_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/downloads","issues_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/issues{/number}","pulls_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/pulls{/number}","milestones_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/milestones{/number}","notifications_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/labels{/name}","releases_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/releases{/id}","deployments_url":"https://api.github.com/repos/ihsandemir/hazelcast-cpp-client/deployments","created_at":"2015-10-27T13:25:02Z","updated_at":"2015-10-27T13:25:06Z","pushed_at":"2018-04-12T18:15:06Z","git_url":"git://github.com/ihsandemir/hazelcast-cpp-client.git","ssh_url":"git@github.com:ihsandemir/hazelcast-cpp-client.git","clone_url":"https://github.com/ihsandemir/hazelcast-cpp-client.git","svn_url":"https://github.com/ihsandemir/hazelcast-cpp-client","homepage":"","size":39780,"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":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hazelcast:master","ref":"master","sha":"214c4a3b6234935d5fd6097f89900e92f2b5a238","user":{"login":"hazelcast","id":1453152,"avatar_url":"https://avatars2.githubusercontent.com/u/1453152?v=4","gravatar_id":"","url":"https://api.github.com/users/hazelcast","html_url":"https://github.com/hazelcast","followers_url":"https://api.github.com/users/hazelcast/followers","following_url":"https://api.github.com/users/hazelcast/following{/other_user}","gists_url":"https://api.github.com/users/hazelcast/gists{/gist_id}","starred_url":"https://api.github.com/users/hazelcast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hazelcast/subscriptions","organizations_url":"https://api.github.com/users/hazelcast/orgs","repos_url":"https://api.github.com/users/hazelcast/repos","events_url":"https://api.github.com/users/hazelcast/events{/privacy}","received_events_url":"https://api.github.com/users/hazelcast/received_events","type":"Organization","site_admin":false},"repo":{"id":44811655,"name":"hazelcast-cpp-client","full_name":"hazelcast/hazelcast-cpp-client","owner":{"login":"hazelcast","id":1453152,"avatar_url":"https://avatars2.githubusercontent.com/u/1453152?v=4","gravatar_id":"","url":"https://api.github.com/users/hazelcast","html_url":"https://github.com/hazelcast","followers_url":"https://api.github.com/users/hazelcast/followers","following_url":"https://api.github.com/users/hazelcast/following{/other_user}","gists_url":"https://api.github.com/users/hazelcast/gists{/gist_id}","starred_url":"https://api.github.com/users/hazelcast/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hazelcast/subscriptions","organizations_url":"https://api.github.com/users/hazelcast/orgs","repos_url":"https://api.github.com/users/hazelcast/repos","events_url":"https://api.github.com/users/hazelcast/events{/privacy}","received_events_url":"https://api.github.com/users/hazelcast/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hazelcast/hazelcast-cpp-client","description":"Hazelcast IMDG C++ Client","fork":false,"url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client","forks_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/forks","keys_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/teams","hooks_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/hooks","issue_events_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/issues/events{/number}","events_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/events","assignees_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/assignees{/user}","branches_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/branches{/branch}","tags_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/tags","blobs_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/git/refs{/sha}","trees_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/statuses/{sha}","languages_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/languages","stargazers_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/stargazers","contributors_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/contributors","subscribers_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/subscribers","subscription_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/subscription","commits_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/commits{/sha}","git_commits_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/git/commits{/sha}","comments_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/comments{/number}","issue_comment_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/issues/comments{/number}","contents_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/contents/{+path}","compare_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/merges","archive_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/downloads","issues_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/issues{/number}","pulls_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls{/number}","milestones_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/milestones{/number}","notifications_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/labels{/name}","releases_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/releases{/id}","deployments_url":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/deployments","created_at":"2015-10-23T12:25:49Z","updated_at":"2018-03-28T12:35:28Z","pushed_at":"2018-04-12T18:15:08Z","git_url":"git://github.com/hazelcast/hazelcast-cpp-client.git","ssh_url":"git@github.com:hazelcast/hazelcast-cpp-client.git","clone_url":"https://github.com/hazelcast/hazelcast-cpp-client.git","svn_url":"https://github.com/hazelcast/hazelcast-cpp-client","homepage":"https://hazelcast.org/clients/cplusplus/","size":37038,"stargazers_count":16,"watchers_count":16,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":13,"mirror_url":null,"archived":false,"open_issues_count":62,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":13,"open_issues":62,"watchers":16,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392"},"html":{"href":"https://github.com/hazelcast/hazelcast-cpp-client/pull/392"},"issue":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/issues/392"},"comments":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/issues/392/comments"},"review_comments":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392/comments"},"review_comment":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/pulls/392/commits"},"statuses":{"href":"https://api.github.com/repos/hazelcast/hazelcast-cpp-client/statuses/d87f4f0c699b3a193c2ae032ee5b7fa787e237f3"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"ihsandemir"}}