// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #pragma once #include "pplx/pplxtasks.h" #include "cpprest/base_uri.h" #include "signalrclient/transport_type.h" #include "logger.h" namespace signalr { class transport { public: virtual pplx::task connect(const web::uri &url) = 0; virtual pplx::task send(const utility::string_t &data) = 0; virtual pplx::task disconnect() = 0; virtual transport_type get_transport_type() const = 0; virtual ~transport(); protected: transport(const logger& logger, const std::function& process_response_callback, std::function error_callback); void process_response(const utility::string_t &message); void error(const std::exception &e); logger m_logger; private: std::function m_process_response_callback; std::function m_error_callback; }; }