// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BLIMP_NET_BLIMP_TRANSPORT_H_ #define BLIMP_NET_BLIMP_TRANSPORT_H_ #include #include "base/memory/scoped_ptr.h" #include "net/base/completion_callback.h" namespace blimp { class BlimpConnection; // An interface which encapsulates the transport-specific code for // establishing network connections between the client and engine. // Subclasses of BlimpTransport are responsible for defining their own // methods for receiving connection arguments. class BlimpTransport { public: virtual ~BlimpTransport() {} // Initiate or listen for a connection. // // |callback| will be invoked with the connection outcome: // * net::OK if a connection is established successful, the BlimpConnection // can be taken by calling TakeConnection(). // * net::ERR_IO_PENDING will never be the outcome // * Other error code indicates no connection was established. virtual void Connect(const net::CompletionCallback& callback) = 0; // Returns the connection object after a successful Connect(). virtual scoped_ptr TakeConnection() = 0; // Gets transport name, e.g. "TCP", "SSL", "mock", etc. virtual const char* GetName() const = 0; }; } // namespace blimp #endif // BLIMP_NET_BLIMP_TRANSPORT_H_