//
//
// 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 SUBSCRIPTIONDB_H
#define SUBSCRIPTIONDB_H
// SYSTEM INCLUDES
// APPLICATION INCLUDES
#include "os/OsMutex.h"
// DEFINES
// MACROS
// EXTERNAL FUNCTIONS
// EXTERNAL VARIABLES
// CONSTANTS
// STRUCTS
// TYPEDEFS
// FORWARD DECLARATIONS
class dbDatabase;
class dbFieldDescriptor;
class UtlHashMap;
class TiXmlNode;
class ResultSet;
class SubscriptionDB
{
public:
// Singleton Accessor
static SubscriptionDB* getInstance(
const UtlString& name = "subscription" );
/// releaseInstance - cleans up the singleton (for use at exit)
static void releaseInstance();
//serialize methods
OsStatus store();
//set methods
UtlBoolean insertRow (
const UtlString& uri,
const UtlString& callid,
const UtlString& contact,
const int& expires,
const int& subscribeCseq,
const UtlString& eventType,
const UtlString& id,
const UtlString& to,
const UtlString& from,
const UtlString& key,
const UtlString& recordRoute,
const int& notifyCseq);
//delete methods - delete a subscription session
void removeRow (
const UtlString& to,
const UtlString& from,
const UtlString& callid,
const int& subscribeCseq );
void removeErrorRow (
const UtlString& to,
const UtlString& from,
const UtlString& callid );
void removeRows ( const UtlString& uri );
void removeAllRows ();
// utility method for dumping all rows
void getAllRows ( ResultSet& rResultSet ) const;
void getUnexpiredSubscriptions (
const UtlString& key,
const UtlString& eventType,
const int& timeNow,
ResultSet& rResultSet ) const;
void updateUnexpiredSubscription (
const UtlString& to,
const UtlString& from,
const UtlString& callid,
const UtlString& eventType,
const UtlString& id,
const int& timeNow,
const int& updatedNotifyCseq) const;
protected:
// this is implicit now
OsStatus load();
// Singleton Constructor is private
SubscriptionDB( const UtlString& name );
// Added this to make load and store code identical
// in all database implementations, One step closer
// to a template version of the code
UtlBoolean insertRow ( const UtlHashMap& nvPairs );
// There is only one singleton in this design
static SubscriptionDB* spInstance;
// Fast DB instance
static dbDatabase* spDBInstance;
// Singleton and Serialization mutex
static OsMutex sLockMutex;
// ResultSet column Keys
static UtlString gUriKey;
static UtlString gCallidKey;
static UtlString gContactKey;
static UtlString gNotifycseqKey;
static UtlString gSubscribecseqKey;
static UtlString gExpiresKey;
static UtlString gEventtypeKey;
static UtlString gIdKey;
static UtlString gToKey;
static UtlString gFromKey;
static UtlString gFileKey;
static UtlString gKeyKey;
static UtlString gRecordrouteKey;
// Fast DB instance
dbDatabase* m_pFastDB;
// the persistent filename for loading/saving
UtlString mDatabaseName;
private:
virtual ~SubscriptionDB();
};
#endif //SUBSCRIPTIONDB_H
syntax highlighted by Code2HTML, v. 0.9.1