1 /* 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_fileutils.h" 12 13 #ifdef WIN32 14 #include <Winsock2.h> 15 #else 16 #include <arpa/inet.h> 17 #endif 18 #include <assert.h> 19 20 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.h" 21 #include "webrtc/system_wrappers/interface/scoped_ptr.h" 22 #include "webrtc/test/testsupport/fileutils.h" 23 24 namespace webrtc { 25 namespace testing { 26 namespace bwe { 27 28 ResourceFileReader::~ResourceFileReader() { 29 if (file_ != NULL) { 30 fclose(file_); 31 file_ = NULL; 32 } 33 } 34 35 bool ResourceFileReader::IsAtEnd() { 36 int32_t current_pos = ftell(file_); 37 fseek(file_, 0, SEEK_END); 38 int32_t end_pos = ftell(file_); 39 fseek(file_, current_pos, SEEK_SET); 40 return current_pos == end_pos; 41 } 42 43 bool ResourceFileReader::Read(uint32_t* out) { 44 assert(out); 45 uint32_t tmp = 0; 46 if (fread(&tmp, 1, sizeof(uint32_t), file_) != sizeof(uint32_t)) { 47 printf("Error reading!\n"); 48 return false; 49 } 50 *out = ntohl(tmp); 51 return true; 52 } 53 54 ResourceFileReader* ResourceFileReader::Create(const std::string& filename, 55 const std::string& extension) { 56 std::string filepath = webrtc::test::ResourcePath(filename, extension); 57 FILE* file = fopen(filepath.c_str(), "rb"); 58 if (file == NULL) { 59 BWE_TEST_LOGGING_CONTEXT("ResourceFileReader"); 60 BWE_TEST_LOGGING_LOG1("Create", "Can't read file: %s", filepath.c_str()); 61 return 0; 62 } else { 63 return new ResourceFileReader(file); 64 } 65 } 66 67 OutputFileWriter::~OutputFileWriter() { 68 if (file_ != NULL) { 69 fclose(file_); 70 file_ = NULL; 71 } 72 } 73 74 bool OutputFileWriter::Write(uint32_t value) { 75 uint32_t tmp = htonl(value); 76 if (fwrite(&tmp, 1, sizeof(uint32_t), file_) != sizeof(uint32_t)) { 77 return false; 78 } 79 return true; 80 } 81 82 OutputFileWriter* OutputFileWriter::Create(const std::string& filename, 83 const std::string& extension) { 84 std::string filepath = webrtc::test::OutputPath() + filename + "." + 85 extension; 86 FILE* file = fopen(filepath.c_str(), "wb"); 87 if (file == NULL) { 88 BWE_TEST_LOGGING_CONTEXT("OutputFileWriter"); 89 BWE_TEST_LOGGING_LOG1("Create", "Can't write file: %s", filepath.c_str()); 90 return NULL; 91 } else { 92 return new OutputFileWriter(file); 93 } 94 } 95 } // namespace bwe 96 } // namespace testing 97 } // namespace webrtc 98