+++ /dev/null
-/*
- * Environment.cxx
- *
- * Copyright 2006,2007 Martin Quinson, Malek Cherier
- * All right reserved.
- *
- * This program is free software; you can redistribute
- * it and/or modify it under the terms of the license
- *(GNU LGPL) which comes with this package.
- *
- */
-
- /* Environment member functions implementation.
- */
-
-#include <Environment.hpp>
-
-#include <stdlib.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <msg/msg.h>
-
-#ifndef S_ISREG
- #define S_ISREG(__mode) (((__mode) & S_IFMT) == S_IFREG)
-#endif
-
-namespace SimGrid
-{
- namespace Msg
- {
- Environment::Environment()
- {
- this->file = NULL;
- this->loaded = false;
- }
-
- Environment::Environment(const Environment& rEnvironment)
- {
- this->file = rEnvironment.getFile();
- this->loaded = rEnvironment.isLoaded();
- }
-
- Environment::Environment(const char* file)
- throw(NullPointerException, FileNotFoundException)
- {
- // check parameters
-
- if(!file)
- throw NullPointerException("file (must not be NULL");
-
- struct stat statBuf = {0};
-
- if(stat(file, &statBuf) < 0 || !S_ISREG(statBuf.st_mode))
- throw FileNotFoundException("file (file not found)");
-
- this->file = file;
- this->loaded = false;
- }
-
- Environment::~Environment()
- {
- // NOTHING TODO
- }
-
- // Operations.
-
- void Environment::load(void)
- throw(LogicException)
- {
- // check logic
-
- if(this->loaded)
- throw LogicException("environement already loaded");
-
- // check the parameters
- if(!this->file)
- throw LogicException("you must specify the xml file which describe the environment to load\nuse Environment::setFile()");
-
- MSG_create_environment(file);
-
- this->loaded = true;
- }
-
- void Environment::load(const char* file)
- throw(NullPointerException, FileNotFoundException, LogicException)
- {
- // check logic
-
- if(this->loaded)
- throw LogicException("environment already loaded");
-
- // check the parameters
-
- if(!file)
- throw NullPointerException("file");
-
- struct stat statBuf = {0};
-
- if(stat(file, &statBuf) < 0 || !S_ISREG(statBuf.st_mode))
- throw FileNotFoundException(file);
-
- MSG_create_environment(file);
-
- this->file = file;
- this->loaded = true;
- }
-
- bool Environment::isLoaded(void) const
- {
- return this->loaded;
- }
-
- // Getters/setters
- void Environment::setFile(const char* file)
- throw(NullPointerException, FileNotFoundException, LogicException)
- {
- // check logic
-
- if(this->loaded)
- throw LogicException("your are trying to change the file of an already loaded environment");
-
- // check parameters
-
- if(!file)
- throw NullPointerException("file (must not be NULL");
-
- struct stat statBuf = {0};
-
- if(stat(file, &statBuf) < 0 || !S_ISREG(statBuf.st_mode))
- throw FileNotFoundException("file (file not found)");
-
- this->file = file;
- }
-
- const char* Environment::getFile(void) const
- {
- return this->file;
- }
-
-
- const Environment& Environment::operator = (const Environment& rEnvironment)
- throw(LogicException)
- {
- // check logic
-
- if(this->loaded)
- throw LogicException("environment already loaded");
-
- this->file = rEnvironment.getFile();
- this->loaded = rEnvironment.isLoaded();
-
- return *this;
- }
-
- } // namespace Msg
-} // namespace SimGrid
-