/* * Copyright 2004 The WebRTC Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree.
*/
// A simple client that can send TCP or UDP data and check that it receives // what it expects to receive. Useful for testing server functionality. class TestClient : public sigslot::has_slots<> { public: // Records the contents of a packet that was received. struct Packet {
Packet(const rtc::ReceivedPacket& received_packet);
Packet(const Packet& p);
// Default timeout for NextPacket reads. staticconstint kTimeoutMs = 5000;
// Creates a client that will send and receive with the given socket and // will post itself messages with the given thread. explicit TestClient(std::unique_ptr<AsyncPacketSocket> socket); // Create a test client that will use a fake clock. NextPacket needs to wait // for a packet to be received, and thus it needs to advance the fake clock // if the test is using one, rather than just sleeping.
TestClient(std::unique_ptr<AsyncPacketSocket> socket,
ThreadProcessingFakeClock* fake_clock);
~TestClient() override;
// Checks that the socket moves to the specified connect state. bool CheckConnState(AsyncPacketSocket::State state);
// Checks that the socket is connected to the remote side. bool CheckConnected() { return CheckConnState(AsyncPacketSocket::STATE_CONNECTED);
}
// Sends using the clients socket. int Send(constchar* buf, size_t size);
// Sends using the clients socket to the given destination. int SendTo(constchar* buf, size_t size, const SocketAddress& dest);
// Returns the next packet received by the client or null if none is received // within the specified timeout.
std::unique_ptr<Packet> NextPacket(int timeout_ms);
// Checks that the next packet has the given contents. Returns the remote // address that the packet was sent from. bool CheckNextPacket(constchar* buf, size_t len, SocketAddress* addr);
// Checks that no packets have arrived or will arrive in the next second. bool CheckNoPacket();
int GetError(); int SetOption(Socket::Option opt, int value);
// How many times SignalReadyToSend has been fired. int ready_to_send_count() const { return ready_to_send_count_; }
private: // Timeout for reads when no packet is expected. staticconstint kNoPacketTimeoutMs = 1000; // Workaround for the fact that AsyncPacketSocket::GetConnState doesn't exist.
Socket::ConnState GetState();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.