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

          Line data    Source code
       1             : /* This Source Code Form is subject to the terms of the Mozilla Public
       2             :  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
       3             :  * You can obtain one at http://mozilla.org/MPL/2.0/. */
       4             : 
       5             : #include "logging.h"
       6             : 
       7             : // nICEr includes
       8             : extern "C" {
       9             : #include "nr_api.h"
      10             : #include "r_memory.h"
      11             : #include "local_addr.h"
      12             : }
      13             : 
      14             : // Local includes
      15             : #include "nricestunaddr.h"
      16             : 
      17             : namespace mozilla {
      18             : 
      19           0 : MOZ_MTLOG_MODULE("mtransport")
      20             : 
      21           0 : NrIceStunAddr::NrIceStunAddr()
      22           0 :   : localAddr_(new nr_local_addr)
      23             : {
      24           0 :   memset(localAddr_, 0, sizeof(nr_local_addr));
      25           0 : }
      26             : 
      27           0 : NrIceStunAddr::NrIceStunAddr(const nr_local_addr* addr)
      28           0 :   : localAddr_(new nr_local_addr)
      29             : {
      30           0 :   nr_local_addr_copy(localAddr_,
      31           0 :                      const_cast<nr_local_addr*>(addr));
      32           0 : }
      33             : 
      34           0 : NrIceStunAddr::NrIceStunAddr(const NrIceStunAddr& rhs)
      35           0 :   : localAddr_(new nr_local_addr)
      36             : {
      37           0 :   nr_local_addr_copy(localAddr_,
      38           0 :                      const_cast<nr_local_addr*>(rhs.localAddr_));
      39           0 : }
      40             : 
      41           0 : NrIceStunAddr::~NrIceStunAddr()
      42             : {
      43           0 :   delete localAddr_;
      44           0 : }
      45             : 
      46             : size_t
      47           0 : NrIceStunAddr::SerializationBufferSize() const
      48             : {
      49           0 :   return sizeof(nr_local_addr);
      50             : }
      51             : 
      52             : nsresult
      53           0 : NrIceStunAddr::Serialize(char* buffer, size_t buffer_size) const
      54             : {
      55           0 :   if (buffer_size != sizeof(nr_local_addr)) {
      56           0 :     MOZ_MTLOG(ML_ERROR, "Failed trying to serialize NrIceStunAddr, "
      57             :                         "input buffer length (" << buffer_size <<
      58             :                         ") does not match required length ("
      59             :                         << sizeof(nr_local_addr) << ")");
      60           0 :     MOZ_ASSERT(false, "Failed to serialize NrIceStunAddr, bad buffer size");
      61             :     return NS_ERROR_FAILURE;
      62             :   }
      63             : 
      64           0 :   nr_local_addr* toAddr = (nr_local_addr*)buffer;
      65           0 :   if (nr_local_addr_copy(toAddr, localAddr_)) {
      66           0 :     MOZ_MTLOG(ML_ERROR, "Failed trying to serialize NrIceStunAddr, "
      67             :                         "could not copy nr_local_addr.");
      68           0 :     MOZ_ASSERT(false, "Failed to serialize NrIceStunAddr, nr_local_addr_copy failed");
      69             :     return NS_ERROR_FAILURE;
      70             :   }
      71             : 
      72             :   // don't serialize what will be a bad addr when we deserialize
      73           0 :   toAddr->addr.addr = nullptr;
      74             : 
      75           0 :   return NS_OK;
      76             : }
      77             : 
      78             : nsresult
      79           0 : NrIceStunAddr::Deserialize(const char* buffer, size_t buffer_size)
      80             : {
      81           0 :   if (buffer_size != sizeof(nr_local_addr)) {
      82           0 :     MOZ_MTLOG(ML_ERROR, "Failed trying to deserialize NrIceStunAddr, "
      83             :                         "input buffer length (" << buffer_size <<
      84             :                         ") does not match required length ("
      85             :                         << sizeof(nr_local_addr) << ")");
      86           0 :     MOZ_ASSERT(false, "Failed to deserialize NrIceStunAddr, bad buffer size");
      87             :     return NS_ERROR_FAILURE;
      88             :   }
      89             : 
      90             :   nr_local_addr* from_addr =
      91           0 :       const_cast<nr_local_addr*>((const nr_local_addr*)buffer);
      92             : 
      93             :   // At this point, from_addr->addr.addr is invalid (null), but will
      94             :   // be fixed by nr_local_addr_copy.
      95           0 :   if (nr_local_addr_copy(localAddr_, from_addr)) {
      96           0 :     MOZ_MTLOG(ML_ERROR, "Failed trying to deserialize NrIceStunAddr, "
      97             :                         "could not copy nr_local_addr.");
      98           0 :     MOZ_ASSERT(false, "Failed to deserialize NrIceStunAddr, nr_local_addr_copy failed");
      99             :     return NS_ERROR_FAILURE;
     100             :   }
     101             : 
     102           0 :   return NS_OK;
     103             : }
     104             : 
     105             : } // namespace mozilla

Generated by: LCOV version 1.13