Listing 2: The CookieManager class

//  CookieManager.h: Interface of CookieManager Class

#if !defined(AFX_COOKIEMANAGER_H__)
#define AFX_COOKIEMANAGER_H__

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#pragma warning (disable:4786)

#include <string>
#include <list>
#include <cassert>
#include "Cookie.h"

using std::string;
using std::list;

typedef list<Cookie> COOKIE_LIST;

class CookieManager  
{
public:
    CookieManager() {}
    CookieManager(const string& strDomain) 
    { 
        m_strDomain = strDomain; 
        assert(m_strDomain.length());
    }
    virtual ~CookieManager() 
    { clearAll(); }

    void addCookie(const string& strCookie)
    { updateCookieList(strCookie); }
    void deleteCookie(const string& strCookie);
    void purgeCookies();
    void clearAll()
    { m_listCookies.clear(); }
    void clearSession();

    void setDomain(const string& strDomain)
    { m_strDomain = strDomain; }
    string getCookieString(const string& strPath, bool bSecure);
    string getDomain()
    { return m_strDomain; }
    long getCookieCount()
    { return m_listCookies.size(); }


protected:
    COOKIE_LIST m_listCookies;
    string m_strDomain;

private:
    // Helper Methods
    void updateCookieList(const Cookie& objCookie);
    void addCookie(const Cookie& objCookie);

};

#endif // !defined(AFX_COOKIEMANAGER_H__)

— End of Listing —