LCOV - code coverage report
Current view: top level - media/mtransport - nriceresolver.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 5 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=2 et sw=2 tw=80: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
       5             :  * You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : 
       8             : // Original authors: jib@mozilla.com, ekr@rtfm.com
       9             : 
      10             : // Some of this code is cut-and-pasted from nICEr. Copyright is:
      11             : 
      12             : /*
      13             : Copyright (c) 2007, Adobe Systems, Incorporated
      14             : All rights reserved.
      15             : 
      16             : Redistribution and use in source and binary forms, with or without
      17             : modification, are permitted provided that the following conditions are
      18             : met:
      19             : 
      20             : * Redistributions of source code must retain the above copyright
      21             :   notice, this list of conditions and the following disclaimer.
      22             : 
      23             : * Redistributions in binary form must reproduce the above copyright
      24             :   notice, this list of conditions and the following disclaimer in the
      25             :   documentation and/or other materials provided with the distribution.
      26             : 
      27             : * Neither the name of Adobe Systems, Network Resonance nor the names of its
      28             :   contributors may be used to endorse or promote products derived from
      29             :   this software without specific prior written permission.
      30             : 
      31             : THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      32             : "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      33             : LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      34             : A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      35             : OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      36             : SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      37             : LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      38             : DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      39             : THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      40             : (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      41             : OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      42             : */
      43             : 
      44             : #ifndef nriceresolver_h__
      45             : #define nriceresolver_h__
      46             : 
      47             : #include <map>
      48             : #include <string>
      49             : #include "nspr.h"
      50             : #include "prnetdb.h"
      51             : #include "nsIDNSService.h"
      52             : #include "nsIDNSListener.h"
      53             : #include "nsICancelable.h"
      54             : 
      55             : typedef struct nr_resolver_ nr_resolver;
      56             : typedef struct nr_resolver_vtbl_ nr_resolver_vtbl;
      57             : typedef struct nr_transport_addr_ nr_transport_addr;
      58             : typedef struct nr_resolver_resource_ nr_resolver_resource;
      59             : 
      60             : namespace mozilla {
      61             : 
      62             : class NrIceResolver
      63             : {
      64             :  private:
      65             :   ~NrIceResolver();
      66             :  public:
      67             :   NrIceResolver();
      68             : 
      69             :   nsresult Init();
      70             :   nr_resolver *AllocateResolver();
      71             :   void DestroyResolver();
      72           0 :   NS_INLINE_DECL_THREADSAFE_REFCOUNTING(NrIceResolver)
      73             : 
      74             :   int resolve(nr_resolver_resource *resource,
      75             :               int (*cb)(void *cb_arg, nr_transport_addr *addr),
      76             :               void *cb_arg, void **handle);
      77             : 
      78             :  private:
      79             :   // Implementations of vtbl functions
      80             :   static int destroy(void **objp);
      81             :   static int resolve(void *obj, nr_resolver_resource *resource,
      82             :                      int (*cb)(void *cb_arg, nr_transport_addr *addr),
      83             :                      void *cb_arg, void **handle);
      84             :   static void resolve_cb(NR_SOCKET s, int how, void *cb_arg);
      85             :   static int cancel(void *obj, void *handle);
      86             : 
      87             :   class PendingResolution : public nsIDNSListener
      88             :   {
      89             :    public:
      90           0 :     PendingResolution(nsIEventTarget *thread,
      91             :                       uint16_t port,
      92             :                       int transport,
      93             :                       int (*cb)(void *cb_arg, nr_transport_addr *addr),
      94           0 :                       void *cb_arg) :
      95             :         thread_(thread),
      96             :         port_(port),
      97             :         transport_(transport),
      98           0 :         cb_(cb), cb_arg_(cb_arg) {}
      99             :     NS_IMETHOD OnLookupComplete(nsICancelable *request, nsIDNSRecord *record,
     100             :                                 nsresult status) override;
     101             :     int cancel();
     102             :     nsCOMPtr<nsICancelable> request_;
     103             :     NS_DECL_THREADSAFE_ISUPPORTS
     104             : 
     105             :    private:
     106           0 :     virtual ~PendingResolution(){};
     107             :     nsCOMPtr<nsIEventTarget> thread_;
     108             :     uint16_t port_;
     109             :     int transport_;
     110             :     int (*cb_)(void *cb_arg, nr_transport_addr *addr);
     111             :     void *cb_arg_;
     112             :   };
     113             : 
     114             :   nr_resolver_vtbl* vtbl_;
     115             :   nsCOMPtr<nsIEventTarget> sts_thread_;
     116             :   nsCOMPtr<nsIDNSService> dns_;
     117             : #ifdef DEBUG
     118             :   int allocated_resolvers_;
     119             : #endif
     120             : };
     121             : 
     122             : }  // End of namespace mozilla
     123             : #endif

Generated by: LCOV version 1.13