lilantha 2003/02/02 01:01:24
Added: contrib/Axis-C++/src/Session SimpleSession.hpp
SimpleSession.cpp Session.hpp
Log:
Session Handlers
Revision Changes Path
1.1 xml-axis/contrib/Axis-C++/src/Session/SimpleSession.hpp
Index: SimpleSession.hpp
===================================================================
/* -*- C++ -*- */
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
/*
*
*
* @author Lilantha Darshana ([EMAIL PROTECTED])
*
*/
#if !defined(AXIS_SIMPLE_SESSION_HPP)
#define AXIS_SIMPLE_SESSION_HPP
#include "Session.hpp"
#include <ctime>
#include <string>
#include <map>
class SimpleSession : public Session
{
public:
SimpleSession();
~SimpleSession(){}
//Get a property from the session
virtual void* Get(const std::string& p_strWhat);
//Set a property in the session
virtual void Set(const std::string& p_strWhat, void* p_pValue);
//Remove a property from the session
virtual void Remove(const std::string& p_strWhat);
//Get an enumeration of the keys in this session
virtual const std::string& GetKeys();// Note this guy only need to acces to the
map.
//Set the session's time-to-live
virtual void SetTimeout(int p_nTimeout){m_nTimeout = p_nTimeout;}
//Return the sessions' time-to-live.
virtual int GetTimeout(){return m_nTimeout;}
//"Touch" the session (mark it recently used)
virtual void Touch(){ m_lLastTouched = clock();}
virtual long GetLastAccessTime(){return m_lLastTouched;}
private:
std::map<std::string, void*> m_Rep;
int m_nTimeout;
long m_lLastTouched;
};
#endif //AXIS_SIMPLE_SESSION_HPP
1.1 xml-axis/contrib/Axis-C++/src/Session/SimpleSession.cpp
Index: SimpleSession.cpp
===================================================================
/* -*- C++ -*- */
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
/*
*
*
* @author Lilantha Darshana ([EMAIL PROTECTED])
*
*/
#include "Platform.hpp"
#include "SimpleSession.hpp"
#include <ctime>
SimpleSession::SimpleSession()
{
m_lLastTouched = clock();
}
/** Get a property from the session
*
* @param key the name of the property desired.
*/
void* SimpleSession::Get(const std::string& p_strWhat)
{
if (m_Rep.empty()) return NULL;
m_lLastTouched = clock();
return m_Rep.find(p_strWhat)->second;
}
/** Set a property in the session
*
* @param key the name of the property to set.
* @param value the value of the property.
*/
void SimpleSession::Set(const std::string& p_strWhat, void* p_pValue)
{
m_lLastTouched = clock();
m_Rep[p_strWhat] = p_pValue;
}
/** Remove a property from the session
*
* @param key the name of the property desired.
*/
void SimpleSession::Remove(const std::string& p_strWhat)
{
if(!m_Rep.empty())
m_Rep.erase(p_strWhat);
m_lLastTouched = clock();
}
1.1 xml-axis/contrib/Axis-C++/src/Session/Session.hpp
Index: Session.hpp
===================================================================
/* -*- C++ -*- */
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "SOAP" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
/*
*
*
* @author Lilantha Darshana ([EMAIL PROTECTED])
*
*/
#if !defined(AXIS_SESSION_HPP)
#define AXIS_SESSION_HPP
#include <string>
class Session
{
public:
Session();
virtual ~Session()=0;
/** Get a property from the session
*
* @param key the name of the property desired.
*/
virtual void* Get(const std::string& p_strWhat)=0;
/** Set a property in the session
*
* @param key the name of the property to set.
* @param value the value of the property.
*/
virtual void Set(const std::string& p_strWhat, void* p_pValue)=0;
/** Remove a property from the session
*
* @param key the name of the property desired.
*/
virtual void Remove(const std::string& p_strWhat)=0;
/**
* Get an enumeration of the keys in this session
*/
// virtual const std::string& GetKeys()=0;
/** Set the session's time-to-live.
*
* This is implementation-specific, but basically should be the #
* of seconds of inactivity which will cause the session to time
* out and invalidate. "inactivity" is implementation-specific.
*/
virtual void SetTimeout(int p_nTimeout)=0;
/**
* Return the sessions' time-to-live.
*
* @return the timeout value for this session.
*/
virtual int GetTimeout()=0;
/**
* "Touch" the session (mark it recently used)
*/
virtual void Touch()=0;
};
#endif // AXIS_SESSION_HPP