[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
Re: [PATCH] Add new test functionality for session servlet
Thanks. Applied.
Sergey wrote:
> From: Sergey Jukov <sergey@total-knowledge.com>
>
> ---
> ChangeLog | 5 +++++
> session/session.cpp | 32 +++++++++++++++++++++++++++++++-
> session/session.h | 11 +++++++++--
> 3 files changed, 45 insertions(+), 3 deletions(-)
>
> diff --git a/ChangeLog b/ChangeLog
> index cde6de9..b25c28c 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,8 @@
> +Sergey Jukov <sergey@total-knowledge.com> Wed, 20 Sep 2006 14:40:00 -0800
> +- Add testing getId(), getCreationTime(), getLastAccessedTime(),
> + setMaxInactiveInterval(), getMaxInactiveInterval(), isNew() and
> + invalidate() functions for session servlet.
> +
> Sergey Jukov <sergey@total-knowledge.com> Tue, 19 Sep 2006 15:50:00 -0800
> - Add testing reset() for headers
>
> diff --git a/session/session.cpp b/session/session.cpp
> index 4e380b6..7abf069 100644
> --- a/session/session.cpp
> +++ b/session/session.cpp
> @@ -1,5 +1,5 @@
> /***************************************************************************
> - * Copyright (C) 2004 by Ilya A. Volynets-Evenbakh *
> + * Copyright (C) 2004-2006 by Ilya A. Volynets-Evenbakh *
> * ilya@total-knowledge.com *
> * *
> * This program is free software; you can redistribute it and/or modify *
> @@ -24,6 +24,10 @@ void SessionServlet::service(servlet::Ht
> {
> std::ostream &out=resp.getOutputStream();
> servlet::HttpSession *s=req.getSession();
> + std::string inval=req.getParameter("inval");
> + if(inval=="true"){
> + s->invalidate();
> + }
> typedef boost::shared_ptr<int> ctr_t;
> ctr_t counter;
> if((counter=boost::static_pointer_cast<int>(s->getAttribute("count")))){
> @@ -33,7 +37,33 @@ void SessionServlet::service(servlet::Ht
> s->setAttribute("count",counter);
> }
> renderHeader(out);
> + out<<"<PRE>";
> + if(s->isNew()){
> + out<<"New session!\n";
> + } else {
> + out<<"Old session\n";
> + }
> out<<"You hit this page "<<*counter<<" times during this session";
> + out<<"\n\nSessionID: "<<s->getId();
> + long sCreationTime=s->getCreationTime();
> + struct tm sout;
> + gmtime_r(&sCreationTime, &sout);
> + char str[32];
> + strftime(str, sizeof(str), "%a, %d %b %Y %H:%M:%S GMT", &sout);
> + out<<"\nCreation time: "<<str;
> + long sLastAccessedTime=s->getLastAccessedTime();
> + gmtime_r(&sLastAccessedTime, &sout);
> + strftime(str, sizeof(str), "%a, %d %b %Y %H:%M:%S GMT", &sout);
> + out<<"\nLast Accessed time: "<<str;
> + s->setMaxInactiveInterval(30);
> + int sMaxInactiveInterval=s->getMaxInactiveInterval();
> + out<<"\nMaximum time interval: "<<sMaxInactiveInterval<<" seconds";
> + if(inval=="true"){
> + out<<"\n\n<a href=\""<<req.getRequestURI()<<"\">Start over</a>\n";
> + } else {
> + out<<"\n\n<a href=\""<<req.getRequestURI()<<"?inval=true\">Invalidate this session</a>\n";
> + }
> + out<<"<\PRE>";
> renderFooter(out);
> }
>
> diff --git a/session/session.h b/session/session.h
> index 0022658..dd81ae3 100644
> --- a/session/session.h
> +++ b/session/session.h
> @@ -1,5 +1,5 @@
> /***************************************************************************
> - * Copyright (C) 2004 by Ilya A. Volynets-Evenbakh *
> + * Copyright (C) 2004-2006 by Ilya A. Volynets-Evenbakh *
> * ilya@total-knowledge.com *
> * *
> * This program is free software; you can redistribute it and/or modify *
> @@ -28,7 +28,14 @@ #include <iostream>
> /**
> This servlet demonstrates how to use sessions.
> It displays a page with number of hits within current session.
> -This servlet also remonstrates use of CPPServObjectWrapper template.
> +This servlet also demonstrates use of CPPServObjectWrapper template.
> +It shows session id, session creation time and the last time when
> +client sent a request associated with this session.
> +It sets time (30 seconds in this example) between client requests
> +before the session will be invalidated and returns maximum time
> +interval, in seconds, that the servlet container will keep this session
> +open between client accesses.
> +It tests work of invalidate() function.
>
> @author Ilya A. Volynets-Evenbakh
> */
>
--
Ilya A. Volynets-Evenbakh
Total Knowledge. CTO
http://www.total-knowledge.com