// Copyright (c) 2011 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 WEBKIT_GLUE_P2P_TRANSPORT_H_ #define WEBKIT_GLUE_P2P_TRANSPORT_H_ #include <string> namespace net { class Socket; } // namespace net namespace webkit_glue { // Interface for P2P transport. class P2PTransport { public: enum State { STATE_NONE = 0, STATE_WRITABLE = 1, STATE_READABLE = 2, }; class EventHandler { public: virtual ~EventHandler() {} // Called for each local candidate. virtual void OnCandidateReady(const std::string& address) = 0; // Called when readable of writable state of the stream changes. virtual void OnStateChange(State state) = 0; }; virtual ~P2PTransport() {} // Initialize transport using specified configuration. Returns true // if initialization succeeded. virtual bool Init(const std::string& name, const std::string& config, EventHandler* event_handler) = 0; // Add candidate received from the remote peer. Returns false if the // provided address is not in a valid format. virtual bool AddRemoteCandidate(const std::string& address) = 0; // Returns socket interface that can be used to send/receive // data. Returned object is owned by the transport. Pending calls on // the socket are canceled when the transport is destroyed. virtual net::Socket* GetChannel() = 0; }; } // namespace webkit_glue #endif // WEBKIT_GLUE_P2P_TRANSPORT_H_