reSIProcate/repro  9694
UserStore.hxx
Go to the documentation of this file.
00001 #if !defined(REPRO_USERSTORE_HXX)
00002 #define REPRO_USERSTORE_HXX
00003 
00004 #include "rutil/Data.hxx"
00005 #include "rutil/Fifo.hxx"
00006 #include "resip/stack/Message.hxx"
00007 
00008 #include "repro/AbstractDb.hxx"
00009 
00010 namespace resip
00011 {
00012   class TransactionUser;
00013 }
00014 
00015 namespace repro
00016 {
00017 
00018 typedef resip::Fifo<resip::Message> MessageFifo;
00019 
00020 class UserStore
00021 {
00022    public:
00023       typedef resip::Data Key;
00024       
00025       UserStore(AbstractDb& db);
00026       
00027       virtual ~UserStore();
00028       
00029       AbstractDb::UserRecord getUserInfo( const Key& key ) const;
00030 
00031       resip::Data getUserAuthInfo( const resip::Data& user,
00032                                    const resip::Data& realm ) const;
00033       
00034       bool addUser( const resip::Data& user, 
00035                     const resip::Data& domain, 
00036                     const resip::Data& realm, 
00037                     const resip::Data& password, 
00038                     bool  applyA1HashToPassword,
00039                     const resip::Data& fullName,
00040                     const resip::Data& emailAddress  );
00041       
00042       void eraseUser( const Key& key );
00043       
00044       bool updateUser( const Key& originalKey,
00045                        const resip::Data& user, 
00046                        const resip::Data& domain, 
00047                        const resip::Data& realm, 
00048                        const resip::Data& password, 
00049                        bool  applyA1HashToPassword,
00050                        const resip::Data& fullName,
00051                        const resip::Data& emailAddress );
00052       
00053       Key getFirstKey();// return empty if no more
00054       Key getNextKey(); // return empty if no more 
00055       
00056    private:
00057       Key buildKey( const resip::Data& user, 
00058                     const resip::Data& domain) const;
00059 
00060       AbstractDb& mDb;
00061 };
00062 
00063  }
00064 #endif  
00065 
00066 /* ====================================================================
00067  * The Vovida Software License, Version 1.0 
00068  * 
00069  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
00070  * 
00071  * Redistribution and use in source and binary forms, with or without
00072  * modification, are permitted provided that the following conditions
00073  * are met:
00074  * 
00075  * 1. Redistributions of source code must retain the above copyright
00076  *    notice, this list of conditions and the following disclaimer.
00077  * 
00078  * 2. Redistributions in binary form must reproduce the above copyright
00079  *    notice, this list of conditions and the following disclaimer in
00080  *    the documentation and/or other materials provided with the
00081  *    distribution.
00082  * 
00083  * 3. The names "VOCAL", "Vovida Open Communication Application Library",
00084  *    and "Vovida Open Communication Application Library (VOCAL)" must
00085  *    not be used to endorse or promote products derived from this
00086  *    software without prior written permission. For written
00087  *    permission, please contact vocal@vovida.org.
00088  *
00089  * 4. Products derived from this software may not be called "VOCAL", nor
00090  *    may "VOCAL" appear in their name, without prior written
00091  *    permission of Vovida Networks, Inc.
00092  * 
00093  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
00094  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00095  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
00096  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
00097  * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
00098  * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
00099  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00100  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00101  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
00102  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00103  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
00104  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
00105  * DAMAGE.
00106  * 
00107  * ====================================================================
00108  */