1/* 2 * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de> 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _PACKAGE__HPKG__PRIVATE__REPOSITORY_WRITER_IMPL_H_ 6#define _PACKAGE__HPKG__PRIVATE__REPOSITORY_WRITER_IMPL_H_ 7 8 9#include <Entry.h> 10 11#include <package/hpkg/PackageContentHandler.h> 12#include <package/hpkg/RepositoryWriter.h> 13#include <package/hpkg/WriterImplBase.h> 14#include <package/PackageInfo.h> 15 16 17namespace BPackageKit { 18 19 20namespace BHPKG { 21 22 23class BPackageEntry; 24class BPackageEntryAttribute; 25class BPackageInfoAttributeValue; 26 27 28namespace BPrivate { 29 30 31struct hpkg_header; 32 33class RepositoryWriterImpl : public WriterImplBase { 34 typedef WriterImplBase inherited; 35 36public: 37 RepositoryWriterImpl( 38 BRepositoryWriterListener* listener, 39 BRepositoryInfo* repositoryInfo); 40 ~RepositoryWriterImpl(); 41 42 status_t Init(const char* fileName); 43 status_t AddPackage(const BEntry& packageEntry); 44 status_t Finish(); 45 46private: 47 status_t _Init(const char* fileName); 48 status_t _AddPackage(const BEntry& packageEntry); 49 status_t _Finish(); 50 51 status_t _RegisterCurrentPackageInfo(); 52 status_t _WriteRepositoryInfo(hpkg_repo_header& header, 53 ssize_t& _infoLengthCompressed); 54 off_t _WritePackageAttributes( 55 hpkg_repo_header& header, off_t startOffset, 56 ssize_t& _packagesLengthCompressed); 57 58 struct PackageNameSet; 59 60private: 61 BRepositoryWriterListener* fListener; 62 63 BRepositoryInfo* fRepositoryInfo; 64 65 BPackageInfo fPackageInfo; 66 uint32 fPackageCount; 67 PackageNameSet* fPackageNames; 68}; 69 70 71} // namespace BPrivate 72 73} // namespace BHPKG 74 75} // namespace BPackageKit 76 77 78#endif // _PACKAGE__HPKG__PRIVATE__REPOSITORY_WRITER_IMPL_H_ 79