Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Unified Diff: net/dns/mdns_client_impl.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/dns/mdns_client.cc ('k') | net/dns/mdns_client_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/dns/mdns_client_impl.h
diff --git a/net/dns/mdns_client_impl.h b/net/dns/mdns_client_impl.h
deleted file mode 100644
index 4ed85f24ac7404b1dafc7411a12ef171f0e49090..0000000000000000000000000000000000000000
--- a/net/dns/mdns_client_impl.h
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright 2013 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 NET_DNS_MDNS_CLIENT_IMPL_H_
-#define NET_DNS_MDNS_CLIENT_IMPL_H_
-
-#include <map>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/cancelable_callback.h"
-#include "base/memory/scoped_vector.h"
-#include "base/observer_list.h"
-#include "net/base/io_buffer.h"
-#include "net/base/ip_endpoint.h"
-#include "net/dns/mdns_cache.h"
-#include "net/dns/mdns_client.h"
-#include "net/udp/datagram_server_socket.h"
-#include "net/udp/udp_server_socket.h"
-#include "net/udp/udp_socket.h"
-
-namespace net {
-
-class MDnsSocketFactoryImpl : public MDnsSocketFactory {
- public:
- MDnsSocketFactoryImpl() {};
- ~MDnsSocketFactoryImpl() override{};
-
- void CreateSockets(ScopedVector<DatagramServerSocket>* sockets) override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MDnsSocketFactoryImpl);
-};
-
-// A connection to the network for multicast DNS clients. It reads data into
-// DnsResponse objects and alerts the delegate that a packet has been received.
-class NET_EXPORT_PRIVATE MDnsConnection {
- public:
- class Delegate {
- public:
- // Handle an mDNS packet buffered in |response| with a size of |bytes_read|.
- virtual void HandlePacket(DnsResponse* response, int bytes_read) = 0;
- virtual void OnConnectionError(int error) = 0;
- virtual ~Delegate() {}
- };
-
- explicit MDnsConnection(MDnsConnection::Delegate* delegate);
- virtual ~MDnsConnection();
-
- // Both methods return true if at least one of the socket handlers succeeded.
- bool Init(MDnsSocketFactory* socket_factory);
- void Send(const scoped_refptr<IOBuffer>& buffer, unsigned size);
-
- private:
- class SocketHandler {
- public:
- SocketHandler(scoped_ptr<DatagramServerSocket> socket,
- MDnsConnection* connection);
- ~SocketHandler();
-
- int Start();
- void Send(const scoped_refptr<IOBuffer>& buffer, unsigned size);
-
- private:
- int DoLoop(int rv);
- void OnDatagramReceived(int rv);
-
- // Callback for when sending a query has finished.
- void SendDone(int rv);
-
- scoped_ptr<DatagramServerSocket> socket_;
- MDnsConnection* connection_;
- IPEndPoint recv_addr_;
- DnsResponse response_;
- IPEndPoint multicast_addr_;
- bool send_in_progress_;
- std::queue<std::pair<scoped_refptr<IOBuffer>, unsigned> > send_queue_;
-
- DISALLOW_COPY_AND_ASSIGN(SocketHandler);
- };
-
- // Callback for handling a datagram being received on either ipv4 or ipv6.
- void OnDatagramReceived(DnsResponse* response,
- const IPEndPoint& recv_addr,
- int bytes_read);
-
- void PostOnError(SocketHandler* loop, int rv);
- void OnError(int rv);
-
- // Only socket handlers which successfully bound and started are kept.
- ScopedVector<SocketHandler> socket_handlers_;
-
- Delegate* delegate_;
-
- base::WeakPtrFactory<MDnsConnection> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(MDnsConnection);
-};
-
-class MDnsListenerImpl;
-
-class NET_EXPORT_PRIVATE MDnsClientImpl : public MDnsClient {
- public:
- // The core object exists while the MDnsClient is listening, and is deleted
- // whenever the number of listeners reaches zero. The deletion happens
- // asychronously, so destroying the last listener does not immediately
- // invalidate the core.
- class Core : public base::SupportsWeakPtr<Core>, MDnsConnection::Delegate {
- public:
- Core();
- ~Core() override;
-
- // Initialize the core. Returns true on success.
- bool Init(MDnsSocketFactory* socket_factory);
-
- // Send a query with a specific rrtype and name. Returns true on success.
- bool SendQuery(uint16 rrtype, std::string name);
-
- // Add/remove a listener to the list of listeners.
- void AddListener(MDnsListenerImpl* listener);
- void RemoveListener(MDnsListenerImpl* listener);
-
- // Query the cache for records of a specific type and name.
- void QueryCache(uint16 rrtype, const std::string& name,
- std::vector<const RecordParsed*>* records) const;
-
- // Parse the response and alert relevant listeners.
- void HandlePacket(DnsResponse* response, int bytes_read) override;
-
- void OnConnectionError(int error) override;
-
- private:
- typedef std::pair<std::string, uint16> ListenerKey;
- typedef std::map<ListenerKey, ObserverList<MDnsListenerImpl>* >
- ListenerMap;
-
- // Alert listeners of an update to the cache.
- void AlertListeners(MDnsCache::UpdateType update_type,
- const ListenerKey& key, const RecordParsed* record);
-
- // Schedule a cache cleanup to a specific time, cancelling other cleanups.
- void ScheduleCleanup(base::Time cleanup);
-
- // Clean up the cache and schedule a new cleanup.
- void DoCleanup();
-
- // Callback for when a record is removed from the cache.
- void OnRecordRemoved(const RecordParsed* record);
-
- void NotifyNsecRecord(const RecordParsed* record);
-
- // Delete and erase the observer list for |key|. Only deletes the observer
- // list if is empty.
- void CleanupObserverList(const ListenerKey& key);
-
- ListenerMap listeners_;
-
- MDnsCache cache_;
-
- base::CancelableClosure cleanup_callback_;
- base::Time scheduled_cleanup_;
-
- scoped_ptr<MDnsConnection> connection_;
-
- DISALLOW_COPY_AND_ASSIGN(Core);
- };
-
- MDnsClientImpl();
- ~MDnsClientImpl() override;
-
- // MDnsClient implementation:
- scoped_ptr<MDnsListener> CreateListener(
- uint16 rrtype,
- const std::string& name,
- MDnsListener::Delegate* delegate) override;
-
- scoped_ptr<MDnsTransaction> CreateTransaction(
- uint16 rrtype,
- const std::string& name,
- int flags,
- const MDnsTransaction::ResultCallback& callback) override;
-
- bool StartListening(MDnsSocketFactory* socket_factory) override;
- void StopListening() override;
- bool IsListening() const override;
-
- Core* core() { return core_.get(); }
-
- private:
- scoped_ptr<Core> core_;
-
- DISALLOW_COPY_AND_ASSIGN(MDnsClientImpl);
-};
-
-class MDnsListenerImpl : public MDnsListener,
- public base::SupportsWeakPtr<MDnsListenerImpl> {
- public:
- MDnsListenerImpl(uint16 rrtype,
- const std::string& name,
- MDnsListener::Delegate* delegate,
- MDnsClientImpl* client);
-
- ~MDnsListenerImpl() override;
-
- // MDnsListener implementation:
- bool Start() override;
-
- // Actively refresh any received records.
- void SetActiveRefresh(bool active_refresh) override;
-
- const std::string& GetName() const override;
-
- uint16 GetType() const override;
-
- MDnsListener::Delegate* delegate() { return delegate_; }
-
- // Alert the delegate of a record update.
- void HandleRecordUpdate(MDnsCache::UpdateType update_type,
- const RecordParsed* record_parsed);
-
- // Alert the delegate of the existence of an Nsec record.
- void AlertNsecRecord();
-
- private:
- void ScheduleNextRefresh();
- void DoRefresh();
-
- uint16 rrtype_;
- std::string name_;
- MDnsClientImpl* client_;
- MDnsListener::Delegate* delegate_;
-
- base::Time last_update_;
- uint32 ttl_;
- bool started_;
- bool active_refresh_;
-
- base::CancelableClosure next_refresh_;
- DISALLOW_COPY_AND_ASSIGN(MDnsListenerImpl);
-};
-
-class MDnsTransactionImpl : public base::SupportsWeakPtr<MDnsTransactionImpl>,
- public MDnsTransaction,
- public MDnsListener::Delegate {
- public:
- MDnsTransactionImpl(uint16 rrtype,
- const std::string& name,
- int flags,
- const MDnsTransaction::ResultCallback& callback,
- MDnsClientImpl* client);
- ~MDnsTransactionImpl() override;
-
- // MDnsTransaction implementation:
- bool Start() override;
-
- const std::string& GetName() const override;
- uint16 GetType() const override;
-
- // MDnsListener::Delegate implementation:
- void OnRecordUpdate(MDnsListener::UpdateType update,
- const RecordParsed* record) override;
- void OnNsecRecord(const std::string& name, unsigned type) override;
-
- void OnCachePurged() override;
-
- private:
- bool is_active() { return !callback_.is_null(); }
-
- void Reset();
-
- // Trigger the callback and reset all related variables.
- void TriggerCallback(MDnsTransaction::Result result,
- const RecordParsed* record);
-
- // Internal callback for when a cache record is found.
- void CacheRecordFound(const RecordParsed* record);
-
- // Signal the transactionis over and release all related resources.
- void SignalTransactionOver();
-
- // Reads records from the cache and calls the callback for every
- // record read.
- void ServeRecordsFromCache();
-
- // Send a query to the network and set up a timeout to time out the
- // transaction. Returns false if it fails to start listening on the network
- // or if it fails to send a query.
- bool QueryAndListen();
-
- uint16 rrtype_;
- std::string name_;
- MDnsTransaction::ResultCallback callback_;
-
- scoped_ptr<MDnsListener> listener_;
- base::CancelableCallback<void()> timeout_;
-
- MDnsClientImpl* client_;
-
- bool started_;
- int flags_;
-
- DISALLOW_COPY_AND_ASSIGN(MDnsTransactionImpl);
-};
-
-} // namespace net
-#endif // NET_DNS_MDNS_CLIENT_IMPL_H_
« no previous file with comments | « net/dns/mdns_client.cc ('k') | net/dns/mdns_client_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698