You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by is...@apache.org on 2022/09/09 20:00:53 UTC
[ignite-3] 12/17: IGNITE-17424 IgniteClient implementation stub
This is an automated email from the ASF dual-hosted git repository.
isapego pushed a commit to branch ignite-17424
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 63f137235bd9ec6508d1770c01d612ea1fb878ed
Author: Igor Sapego <is...@apache.org>
AuthorDate: Wed Aug 31 09:01:30 2022 +0400
IGNITE-17424 IgniteClient implementation stub
---
.../cpp/client/include/ignite/ignite_client.h | 15 +++--
modules/platforms/cpp/client/src/ignite_client.cpp | 15 ++++-
.../platforms/cpp/client/src/ignite_client_impl.h | 65 ++++++++++++++++++++++
3 files changed, 90 insertions(+), 5 deletions(-)
diff --git a/modules/platforms/cpp/client/include/ignite/ignite_client.h b/modules/platforms/cpp/client/include/ignite/ignite_client.h
index 3c47c31641..4a8b45d30e 100644
--- a/modules/platforms/cpp/client/include/ignite/ignite_client.h
+++ b/modules/platforms/cpp/client/include/ignite/ignite_client.h
@@ -37,14 +37,14 @@ class IgniteClient
{
public:
// Deleted
- IgniteClient() = delete;
+ IgniteClient(const IgniteClient&) = delete;
+ IgniteClient& operator=(const IgniteClient&) = delete;
// Default
+ IgniteClient() = default;
~IgniteClient() = default;
IgniteClient(IgniteClient&&) = default;
- IgniteClient(const IgniteClient&) = default;
IgniteClient& operator=(IgniteClient&&) = default;
- IgniteClient& operator=(const IgniteClient&) = default;
/**
* Start client asynchronously.
@@ -68,8 +68,15 @@ public:
static std::future<IgniteClient> startAsync(IgniteClientConfiguration configuration);
private:
+ /**
+ * Constructor
+ *
+ * @param impl Implementation
+ */
+ explicit IgniteClient(std::unique_ptr<impl::IgniteClientImpl> impl);
+
/** Implementation. */
- std::shared_ptr<impl::IgniteClientImpl> m_impl;
+ std::unique_ptr<impl::IgniteClientImpl> m_impl;
};
} // namespace ignite
\ No newline at end of file
diff --git a/modules/platforms/cpp/client/src/ignite_client.cpp b/modules/platforms/cpp/client/src/ignite_client.cpp
index e94dd89d1e..ddb8975344 100644
--- a/modules/platforms/cpp/client/src/ignite_client.cpp
+++ b/modules/platforms/cpp/client/src/ignite_client.cpp
@@ -17,12 +17,25 @@
#include "ignite/ignite_client.h"
+#include "ignite_client_impl.h"
+
namespace ignite
{
+
std::future<IgniteClient> IgniteClient::startAsync(IgniteClientConfiguration configuration)
{
- return {};
+ return std::async(std::launch::async, [cfg = std::move(configuration)]() {
+
+ auto impl = std::make_unique<impl::IgniteClientImpl>(cfg);
+
+ impl->start();
+
+ return IgniteClient(std::move(impl));
+ });
}
+IgniteClient::IgniteClient(std::unique_ptr<impl::IgniteClientImpl> impl) :
+ m_impl(std::move(impl)) { }
+
} // namespace ignite
diff --git a/modules/platforms/cpp/client/src/ignite_client_impl.h b/modules/platforms/cpp/client/src/ignite_client_impl.h
new file mode 100644
index 0000000000..17be39464f
--- /dev/null
+++ b/modules/platforms/cpp/client/src/ignite_client_impl.h
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <future>
+#include <memory>
+
+#include "ignite/ignite_client_configuration.h"
+
+namespace ignite::impl
+{
+
+/**
+ * Ignite client implementation.
+ */
+class IgniteClientImpl
+{
+public:
+ // Deleted
+ IgniteClientImpl(const IgniteClientImpl&) = delete;
+ IgniteClientImpl& operator=(const IgniteClientImpl&) = delete;
+
+ // Default
+ IgniteClientImpl() = default;
+ ~IgniteClientImpl() = default;
+ IgniteClientImpl(IgniteClientImpl&&) = default;
+ IgniteClientImpl& operator=(IgniteClientImpl&&) = default;
+
+ /**
+ * Constructor.
+ *
+ * @param configuration Configuration.
+ */
+ explicit IgniteClientImpl(IgniteClientConfiguration configuration) :
+ m_configuration(std::move(configuration)) { }
+
+ /**
+ * Start client.
+ */
+ void start()
+ {
+ // TODO
+ }
+
+private:
+ /** Configuration. */
+ IgniteClientConfiguration m_configuration;
+};
+
+} // namespace ignite::impl
\ No newline at end of file