1e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/* 2e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * 4e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Use of this source code is governed by a BSD-style license 5e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * that can be found in the LICENSE file in the root of the source 6e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * tree. An additional intellectual property rights grant can be found 7e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * in the file PATENTS. All contributing project authors may 8e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * be found in the AUTHORS file in the root of the source tree. 9e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */ 10e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 11e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_FILE_IMPL_H_ 12e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_FILE_IMPL_H_ 13e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 14e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#include "file_wrapper.h" 15e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 16e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#include <stdio.h> 17e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 18e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentnamespace webrtc { 19c55a96383497a772a307b346368133960b02ad03Eric Laurent 20e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentclass FileWrapperImpl : public FileWrapper 21e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent{ 22e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentpublic: 23e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent FileWrapperImpl(); 24e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent virtual ~FileWrapperImpl(); 25e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 26c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual int FileName(char* fileNameUTF8, 27c55a96383497a772a307b346368133960b02ad03Eric Laurent size_t size) const; 28e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 29e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent virtual bool Open() const; 30e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 31c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual int OpenFile(const char* fileNameUTF8, 32c55a96383497a772a307b346368133960b02ad03Eric Laurent bool readOnly, 33c55a96383497a772a307b346368133960b02ad03Eric Laurent bool loop = false, 34c55a96383497a772a307b346368133960b02ad03Eric Laurent bool text = false); 35e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 36c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual int CloseFile(); 37c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual int SetMaxFileSize(size_t bytes); 38c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual int Flush(); 39e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 40c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual int Read(void* buf, int length); 41c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual bool Write(const void *buf, int length); 42c55a96383497a772a307b346368133960b02ad03Eric Laurent virtual int WriteText(const char* format, ...); 43e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent virtual int Rewind(); 44e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 45e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentprivate: 46c55a96383497a772a307b346368133960b02ad03Eric Laurent FILE* _id; 47c55a96383497a772a307b346368133960b02ad03Eric Laurent bool _open; 48c55a96383497a772a307b346368133960b02ad03Eric Laurent bool _looping; 49c55a96383497a772a307b346368133960b02ad03Eric Laurent bool _readOnly; 50c55a96383497a772a307b346368133960b02ad03Eric Laurent size_t _maxSizeInBytes; // -1 indicates file size limitation is off 51c55a96383497a772a307b346368133960b02ad03Eric Laurent size_t _sizeInBytes; 52c55a96383497a772a307b346368133960b02ad03Eric Laurent char _fileNameUTF8[kMaxFileNameSize]; 53e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent}; 54c55a96383497a772a307b346368133960b02ad03Eric Laurent 55e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent} // namespace webrtc 56e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 57e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_FILE_IMPL_H_ 58