From 443f9e81c2f721898c1e7edf2940172fef6f55fe Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 27 Feb 2020 16:47:49 +0100 Subject: [HICN-539] Expose portal APIs to applications Change-Id: Icbaad69981193119714f5689faf3518d2e152e11 Signed-off-by: Mauro Sardara --- libtransport/src/interfaces/portal.cc | 100 ++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 libtransport/src/interfaces/portal.cc (limited to 'libtransport/src/interfaces/portal.cc') diff --git a/libtransport/src/interfaces/portal.cc b/libtransport/src/interfaces/portal.cc new file mode 100644 index 000000000..36cbd0c3b --- /dev/null +++ b/libtransport/src/interfaces/portal.cc @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2020 Cisco and/or its affiliates. + * Licensed 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. + */ + +#include + +#include + +namespace transport { +namespace interface { + +using implementation::BasePortal; + +Portal::Portal() { implementation_ = new implementation::BasePortal(); } + +Portal::Portal(asio::io_service &io_service) { + implementation_ = new BasePortal(io_service); +} + +Portal::~Portal() { delete reinterpret_cast(implementation_); } + +void Portal::setConsumerCallback(ConsumerCallback *consumer_callback) { + reinterpret_cast(implementation_) + ->setConsumerCallback(consumer_callback); +} + +void Portal::setProducerCallback(ProducerCallback *producer_callback) { + reinterpret_cast(implementation_) + ->setProducerCallback(producer_callback); +} + +void Portal::connect(bool is_consumer) { + reinterpret_cast(implementation_)->connect(is_consumer); +} + +bool Portal::interestIsPending(const core::Name &name) { + return reinterpret_cast(implementation_) + ->interestIsPending(name); +} + +void Portal::sendInterest( + core::Interest::Ptr &&interest, + OnContentObjectCallback &&on_content_object_callback, + OnInterestTimeoutCallback &&on_interest_timeout_callback) { + reinterpret_cast(implementation_) + ->sendInterest(std::move(interest), std::move(on_content_object_callback), + std::move(on_interest_timeout_callback)); +} + +void Portal::bind(const BindConfig &config) { + reinterpret_cast(implementation_)->bind(config); +} + +void Portal::runEventsLoop() { + reinterpret_cast(implementation_)->runEventsLoop(); +} + +void Portal::runOneEvent() { + reinterpret_cast(implementation_)->runOneEvent(); +} + +void Portal::sendContentObject(core::ContentObject &content_object) { + reinterpret_cast(implementation_) + ->sendContentObject(content_object); +} + +void Portal::stopEventsLoop() { + reinterpret_cast(implementation_)->stopEventsLoop(); +} + +void Portal::killConnection() { + reinterpret_cast(implementation_)->killConnection(); +} + +void Portal::clear() { + reinterpret_cast(implementation_)->clear(); +} + +asio::io_service &Portal::getIoService() { + return reinterpret_cast(implementation_)->getIoService(); +} + +void Portal::registerRoute(core::Prefix &prefix) { + reinterpret_cast(implementation_)->registerRoute(prefix); +} + +} // namespace interface + +} // namespace transport \ No newline at end of file -- cgit 1.2.3-korg