root/src/kits/package/TempfileManager.cpp
/*
 * Copyright 2011, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Oliver Tappe <zooey@hirschkaefer.de>
 */


#include "TempfileManager.h"


namespace BPackageKit {

namespace BPrivate {


const BString TempfileManager::kDefaultName = "tmp-pkgkit-file-";


TempfileManager::TempfileManager()
        :
        fNextNumber(1)
{
}


TempfileManager::~TempfileManager()
{
        if (fBaseDirectory.InitCheck() != B_OK)
                return;

        fBaseDirectory.Rewind();
        BEntry entry;
        while (fBaseDirectory.GetNextEntry(&entry) == B_OK)
                entry.Remove();

        fBaseDirectory.GetEntry(&entry);
        entry.Remove();
}


void
TempfileManager::SetBaseDirectory(const BDirectory& baseDirectory)
{
        fBaseDirectory = baseDirectory;
}


BEntry
TempfileManager::Create(const BString& baseName)
{
        BString name = BString(baseName) << atomic_add(&fNextNumber, 1);

        return BEntry(&fBaseDirectory, name.String());
}


}       // namespace BPrivate

}       // namespace BPackageKit