mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-08 04:27:12 +03:00
move to new cspot
This commit is contained in:
70
components/spotify/cspot/bell/main/io/FileStream.cpp
Normal file
70
components/spotify/cspot/bell/main/io/FileStream.cpp
Normal file
@@ -0,0 +1,70 @@
|
||||
#include "FileStream.h"
|
||||
|
||||
using namespace bell;
|
||||
|
||||
FileStream::FileStream(const std::string& path, std::string read)
|
||||
{
|
||||
file = fopen(path.c_str(), "rb");
|
||||
if (file == NULL)
|
||||
{
|
||||
throw std::runtime_error("Could not open file: " + path);
|
||||
}
|
||||
}
|
||||
|
||||
FileStream::~FileStream()
|
||||
{
|
||||
close();
|
||||
}
|
||||
|
||||
size_t FileStream::read(uint8_t *buf, size_t nbytes)
|
||||
{
|
||||
if (file == NULL)
|
||||
{
|
||||
throw std::runtime_error("Stream is closed");
|
||||
}
|
||||
|
||||
return fread(buf, 1, nbytes, file);
|
||||
}
|
||||
|
||||
size_t FileStream::skip(size_t nbytes)
|
||||
{
|
||||
if (file == NULL)
|
||||
{
|
||||
throw std::runtime_error("Stream is closed");
|
||||
}
|
||||
|
||||
return fseek(file, nbytes, SEEK_CUR);
|
||||
}
|
||||
|
||||
size_t FileStream::position()
|
||||
{
|
||||
if (file == NULL)
|
||||
{
|
||||
throw std::runtime_error("Stream is closed");
|
||||
}
|
||||
|
||||
return ftell(file);
|
||||
}
|
||||
|
||||
size_t FileStream::size()
|
||||
{
|
||||
if (file == NULL)
|
||||
{
|
||||
throw std::runtime_error("Stream is closed");
|
||||
}
|
||||
|
||||
size_t pos = ftell(file);
|
||||
fseek(file, 0, SEEK_END);
|
||||
size_t size = ftell(file);
|
||||
fseek(file, pos, SEEK_SET);
|
||||
return size;
|
||||
}
|
||||
|
||||
void FileStream::close()
|
||||
{
|
||||
if (file != NULL)
|
||||
{
|
||||
fclose(file);
|
||||
file = NULL;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user