Skip to content

Commit b2cb7d6

Browse files
committed
blobber
1 parent a4df46a commit b2cb7d6

File tree

2 files changed

+15
-26
lines changed

2 files changed

+15
-26
lines changed

src/resource/factory/BlobFactory.cpp

+13-19
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,24 @@
11
#include "resource/factory/BlobFactory.h"
22
#include "resource/type/Blob.h"
3+
#include "resource/readerbox/BinaryReaderBox.h"
34
#include "spdlog/spdlog.h"
45

56
namespace LUS {
6-
std::shared_ptr<IResource> BlobFactory::ReadResource(std::shared_ptr<ResourceInitData> initData,
7-
std::shared_ptr<BinaryReader> reader) {
8-
auto resource = std::make_shared<Blob>(initData);
9-
std::shared_ptr<ResourceVersionFactory> factory = nullptr;
10-
11-
switch (resource->GetInitData()->ResourceVersion) {
12-
case 0:
13-
factory = std::make_shared<BlobFactoryV0>();
14-
break;
7+
std::shared_ptr<IResource> ResourceFactoryBinaryBlobV0::ReadResource(std::shared_ptr<ResourceInitData> initData,
8+
std::shared_ptr<ReaderBox> readerBox) {
9+
auto binaryReaderBox = std::dynamic_pointer_cast<BinaryReaderBox>(readerBox);
10+
if (binaryReaderBox == nullptr) {
11+
SPDLOG_ERROR("ReaderBox must be a BinaryReaderBox.");
12+
return nullptr;
1513
}
1614

17-
if (factory == nullptr) {
18-
SPDLOG_ERROR("Failed to load Blob with version {}", resource->GetInitData()->ResourceVersion);
15+
auto reader = binaryReaderBox->GetReader();
16+
if (reader == nullptr) {
17+
SPDLOG_ERROR("null reader in box.");
1918
return nullptr;
2019
}
2120

22-
factory->ParseFileBinary(reader, resource);
23-
24-
return resource;
25-
}
26-
27-
void BlobFactoryV0::ParseFileBinary(std::shared_ptr<BinaryReader> reader, std::shared_ptr<IResource> resource) {
28-
std::shared_ptr<Blob> blob = std::static_pointer_cast<Blob>(resource);
29-
ResourceVersionFactory::ParseFileBinary(reader, blob);
21+
auto blob = std::make_shared<Blob>(initData);
3022

3123
uint32_t dataSize = reader->ReadUInt32();
3224

@@ -35,5 +27,7 @@ void BlobFactoryV0::ParseFileBinary(std::shared_ptr<BinaryReader> reader, std::s
3527
for (uint32_t i = 0; i < dataSize; i++) {
3628
blob->Data.push_back(reader->ReadUByte());
3729
}
30+
31+
return blob;
3832
}
3933
} // namespace LUS

src/resource/factory/BlobFactory.h

+2-7
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,9 @@
44
#include "resource/ResourceFactory.h"
55

66
namespace LUS {
7-
class BlobFactory : public ResourceFactory {
7+
class ResourceFactoryBinaryBlobV0 : public ResourceFactory {
88
public:
99
std::shared_ptr<IResource> ReadResource(std::shared_ptr<ResourceInitData> initData,
10-
std::shared_ptr<BinaryReader> reader) override;
11-
};
12-
13-
class BlobFactoryV0 : public ResourceVersionFactory {
14-
public:
15-
void ParseFileBinary(std::shared_ptr<BinaryReader> reader, std::shared_ptr<IResource> resource) override;
10+
std::shared_ptr<ReaderBox> readerBox) override;
1611
};
1712
}; // namespace LUS

0 commit comments

Comments
 (0)