blob: e36d6141cc4f286b143b8f4be2bcf7bd73134683 [file] [log] [blame]
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file AxisFile.h
*
* @author Damitha Kumarage (damitha@opensource.lk, damitha@jkcsworld.com)
*
*/
#if !defined(__AXIS_AXISFILE_H_OF_AXIS_INCLUDED__)
#define __AXIS_AXISFILE_H_OF_AXIS_INCLUDED__
#include <axis/GDefine.hpp>
#include <stdio.h>
#include <string.h>
/**
* @class AxisFile
* @brief class for allocating file resources for Axis C++
*
* The purpose of this class is to provide a mechanism which allows Axis C++
* to use file resources without worrying about releasing resources.
* How to use this class:
* When you need the file resource inside a method do as following
* AxisFile fileConfig;
* fileConfig.fileOpen("char* file name parameter", "<char* file Permission parameter")
* fileGet(<char* line>, <int buffersize>) etc
* No need to worry about file closing because when fileConfig go out of local scope
* it's destructor is called and inside it fclose is called
*
* @author Damitha Kumarage (damitha@opensource.lk, damitha@jkcsworld.com)
*/
AXIS_CPP_NAMESPACE_START
class AxisFile
{
public:
/**
* Default constructor
*/
AxisFile()
{
pFILEFile = NULL;
}
/**
* Constructor with one paratmer
* @param pointer to a FILE
*/
AxisFile(FILE* pFILEParamFile)
{
pFILEFile = pFILEParamFile;
}
/** Use this to open a file
* @param file name
* @param file permission
* @return error code
*/
int fileOpen(const char* sFileName, const char* sFilePerm)
{
if ((pFILEFile = fopen (sFileName, sFilePerm)) == NULL)
return AXIS_FAIL;
return AXIS_SUCCESS;
}
/** Use this to read a line from the file
* @param char buffer into which line is read
* @param buffer size
* @return error code
*/
int fileGet(char* sLine, int iBufferSize)
{
if(fgets (sLine, iBufferSize, pFILEFile) != NULL )
{
char * newline = strpbrk(sLine, "\n");
if(newline)
{
*newline = '\0';
}
return AXIS_SUCCESS;
}
return AXIS_FAIL;
}
/** Use this to write a line to the file
* @param char buffer to be written to the file
*/
int filePuts (const char* pcWrite)
{
if (-1 < fputs(pcWrite, pFILEFile))
return AXIS_SUCCESS;
return AXIS_FAIL;
}
/** Use this flush the buffer
*/
int fileFlush ()
{
if (0 == fflush(pFILEFile))
return AXIS_SUCCESS;
return AXIS_FAIL;
}
~AxisFile()
{
if(pFILEFile)
{
fclose(pFILEFile);
pFILEFile = NULL;
}
}
private:
FILE* pFILEFile;
};
AXIS_CPP_NAMESPACE_END
#endif