Home | History | Annotate | Download | only in gdig
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <stdio.h>
      6 
      7 #include "base/json/json_string_value_serializer.h"
      8 #include "base/logging.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "base/values.h"
     11 #include "net/tools/gdig/file_net_log.h"
     12 
     13 namespace net {
     14 
     15 FileNetLogObserver::FileNetLogObserver(FILE* destination)
     16     : destination_(destination) {
     17   DCHECK(destination != NULL);
     18 }
     19 
     20 FileNetLogObserver::~FileNetLogObserver() {
     21 }
     22 
     23 void FileNetLogObserver::OnAddEntry(const net::NetLog::Entry& entry) {
     24   // Only BoundNetLogs without a NetLog should have an invalid source.
     25   DCHECK(entry.source().IsValid());
     26 
     27   const char* source = NetLog::SourceTypeToString(entry.source().type);
     28   const char* type = NetLog::EventTypeToString(entry.type());
     29 
     30   scoped_ptr<Value> param_value(entry.ParametersToValue());
     31   std::string params;
     32   if (param_value.get() != NULL) {
     33     JSONStringValueSerializer serializer(&params);
     34     bool ret = serializer.Serialize(*param_value);
     35     DCHECK(ret);
     36   }
     37   base::Time now = base::Time::NowFromSystemTime();
     38   base::AutoLock lock(lock_);
     39   if (first_event_time_.is_null()) {
     40     first_event_time_ = now;
     41   }
     42   base::TimeDelta elapsed_time = now - first_event_time_;
     43   fprintf(destination_ , "%u\t%u\t%s\t%s\t%s\n",
     44           static_cast<unsigned>(elapsed_time.InMilliseconds()),
     45           entry.source().id, source, type, params.c_str());
     46 }
     47 
     48 }  // namespace net
     49