mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
// Copyright (c) 2012 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 TOOLS_ANDROID_FORWARDER2_FORWARDER_H_
|
|
#define TOOLS_ANDROID_FORWARDER2_FORWARDER_H_
|
|
|
|
#include <sys/select.h>
|
|
|
|
#include "base/memory/scoped_ptr.h"
|
|
#include "base/threading/thread_checker.h"
|
|
|
|
namespace forwarder2 {
|
|
|
|
class Socket;
|
|
|
|
// Internal class that forwards traffic between |socket1| and |socket2|. Note
|
|
// that this class is not thread-safe.
|
|
class Forwarder {
|
|
public:
|
|
Forwarder(scoped_ptr<Socket> socket1, scoped_ptr<Socket> socket2);
|
|
|
|
~Forwarder();
|
|
|
|
void RegisterFDs(fd_set* read_fds, fd_set* write_fds, int* max_fd);
|
|
|
|
void ProcessEvents(const fd_set& read_fds, const fd_set& write_fds);
|
|
|
|
bool IsClosed() const;
|
|
|
|
void Shutdown();
|
|
|
|
private:
|
|
class BufferedCopier;
|
|
|
|
base::ThreadChecker thread_checker_;
|
|
const scoped_ptr<Socket> socket1_;
|
|
const scoped_ptr<Socket> socket2_;
|
|
// Copies data from socket1 to socket2.
|
|
const scoped_ptr<BufferedCopier> buffer1_;
|
|
// Copies data from socket2 to socket1.
|
|
const scoped_ptr<BufferedCopier> buffer2_;
|
|
};
|
|
|
|
} // namespace forwarder2
|
|
|
|
#endif // TOOLS_ANDROID_FORWARDER2_FORWARDER_H_
|