Skip to content
Snippets Groups Projects
Commit eecc4eb0 authored by Steven Murray's avatar Steven Murray
Browse files

Added FileSystemNode(FileSystemStorageClasses &storageclasses, const DirectoryEntry &entry)

parent a25ff3fa
Branches
Tags
No related merge requests found
......@@ -5,21 +5,57 @@
// constructor
//------------------------------------------------------------------------------
cta::FileSystemNode::FileSystemNode():
m_storageClasses(NULL),
m_parent(NULL) {
}
//------------------------------------------------------------------------------
// constructor
//------------------------------------------------------------------------------
cta::FileSystemNode::FileSystemNode(const DirectoryEntry& entry):
cta::FileSystemNode::FileSystemNode(const DirectoryEntry &entry):
m_storageClasses(NULL),
m_parent(NULL),
m_entry(entry) {
}
//------------------------------------------------------------------------------
// constructor
//------------------------------------------------------------------------------
cta::FileSystemNode::FileSystemNode(FileSystemStorageClasses &storageclasses,
const DirectoryEntry &entry):
m_storageClasses(&storageclasses),
m_entry(entry) {
storageclasses.incStorageClassUsageCount(entry.storageClassName);
}
//------------------------------------------------------------------------------
// destructor
//------------------------------------------------------------------------------
cta::FileSystemNode::~FileSystemNode() throw() {
try {
decStorageClassUsageCount();
} catch(...) {
}
try {
deleteAndClearChildren();
} catch(...) {
}
}
//------------------------------------------------------------------------------
// decStorageClassUsageCount
//------------------------------------------------------------------------------
void cta::FileSystemNode::decStorageClassUsageCount() {
if(m_storageClasses) {
m_storageClasses->decStorageClassUsageCount(m_entry.storageClassName);
}
}
//------------------------------------------------------------------------------
// deleteAndClearChildren
//------------------------------------------------------------------------------
void cta::FileSystemNode::deleteAndClearChildren() {
for(std::map<std::string, FileSystemNode*>::const_iterator itor =
m_children.begin(); itor != m_children.end(); itor++) {
delete(itor->second);
......
#pragma once
#include "DirectoryEntry.hpp"
#include "FileSystemStorageClasses.hpp"
#include <map>
......@@ -22,7 +23,16 @@ public:
*
* @param entry The description of the node in the form of a DirectoryEntry.
*/
FileSystemNode(const DirectoryEntry& entry);
FileSystemNode(const DirectoryEntry &entry);
/**
* Constructor.
*
* @param The storage classes used in the file system.
* @param entry The description of the node in the form of a DirectoryEntry.
*/
FileSystemNode(FileSystemStorageClasses &storageclasses,
const DirectoryEntry &entry);
/**
* Destructor.
......@@ -112,6 +122,11 @@ public:
protected:
/**
* The storage classes used in the file system.
*/
FileSystemStorageClasses *m_storageClasses;
/**
* Pointer to the parent of this node.
*/
......@@ -127,6 +142,17 @@ protected:
*/
std::map<std::string, FileSystemNode*> m_children;
};
/**
* If the file system storage classes are known then this method decremenets
* the usage count of the storage classs associated with this node.
*/
void decStorageClassUsageCount();
/**
* Deletes and clears the child nodes.
*/
void deleteAndClearChildren();
}; // class FileSystemNode
} // namespace cta
......@@ -10,7 +10,7 @@
namespace cta {
/**
* Container ofthe storage classes current used in the file system.
* The storage classes used in the file system.
*/
class FileSystemStorageClasses {
public:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment