// 
// Copyright (C) 2004 SIPfoundry Inc.
// Licensed by SIPfoundry under the LGPL license.
// 
// Copyright (C) 2004 Pingtel Corp.
// Licensed to SIPfoundry under a Contributor Agreement.
// 
//////////////////////////////////////////////////////////////////////////////

#ifndef _ForkingProxyCseObserver_h_
#define _ForkingProxyCseObserver_h_

// SYSTEM INCLUDES
#include "utl/UtlString.h"

// APPLICATION INCLUDES
#include <os/OsServerTask.h>
#include <os/OsFS.h>
#include <os/OsTimer.h>
#include "CallStateEventBuilder_XML.h"
#include "CallStateEventBuilder_DB.h"
#include "CallStateEventWriter_XML.h"
#include "CallStateEventWriter_DB.h"

// DEFINES
// MACROS
// EXTERNAL FUNCTIONS
// EXTERNAL VARIABLES
// CONSTANTS
// STRUCTS
// TYPEDEFS
// FORWARD DECLARATIONS
class SipUserAgent;

/// Observe and record Call State Events in the Forking Proxy
class ForkingProxyCseObserver : public OsServerTask
{
/* //////////////////////////// PUBLIC //////////////////////////////////// */
public:

/* ============================ CREATORS ================================== */

   ForkingProxyCseObserver(SipUserAgent&         sipUserAgent,
                           const UtlString&      dnsName,
                           CallStateEventWriter* pWriter
                           );
     //:Default constructor

   virtual
   ~ForkingProxyCseObserver();
     //:Destructor

/* ============================ MANIPULATORS ============================== */

   virtual UtlBoolean handleMessage(OsMsg& rMsg);

/* //////////////////////////// PROTECTED ///////////////////////////////// */
protected:

/* //////////////////////////// PRIVATE /////////////////////////////////// */
private:
   SipUserAgent*              mpSipUserAgent;
   CallStateEventBuilder*     mpBuilder;
   CallStateEventWriter*      mpWriter;
   
   int                        mSequenceNumber;
   OsTimer*                   mFlushTimer;
   
   /// no copy constructor or assignment operator
   ForkingProxyCseObserver(const ForkingProxyCseObserver& rForkingProxyCseObserver);
   ForkingProxyCseObserver operator=(const ForkingProxyCseObserver& rForkingProxyCseObserver);
};

/* ============================ INLINE METHODS ============================ */

#endif  // _ForkingProxyCseObserver_h_


syntax highlighted by Code2HTML, v. 0.9.1