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
  
  
  


Reply via email to