You are currently viewing a snapshot of www.mozilla.org taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to www.mozilla.org, please file a bug.



Main Page   Compound List   File List   Compound Members  

tmQueue.h

00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00003  *
00004  * The contents of this file are subject to the Mozilla Public License Version
00005  * 1.1 (the "License"); you may not use this file except in compliance with
00006  * the License. You may obtain a copy of the License at
00007  * http://www.mozilla.org/MPL/
00008  *
00009  * Software distributed under the License is distributed on an "AS IS" basis,
00010  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00011  * for the specific language governing rights and limitations under the
00012  * License.
00013  *
00014  * The Original Code is Mozilla Transaction Manager.
00015  *
00016  * The Initial Developer of the Original Code is
00017  * Netscape Communications Corp.
00018  * Portions created by the Initial Developer are Copyright (C) 2003
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *   John Gaunt <jgaunt@netscape.com>
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either the GNU General Public License Version 2 or later (the "GPL"), or
00026  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 #ifndef _tmQueue_H_
00039 #define _tmQueue_H_
00040 
00041 #include "tmUtils.h"
00042 #include "tmVector.h"
00043 
00044 class tmClient;
00045 class tmTransaction;
00046 class tmTransactionManager;
00047 
00058 class tmQueue
00059 {
00060 
00061 public:
00062 
00064   // Constructor & Destructor
00065 
00070   tmQueue(): mID(0), mName(nsnull), mTM(nsnull) {;}
00071 
00076   virtual ~tmQueue();
00077 
00079   // Public Member Functions
00080 
00089   nsresult Init(const char* aName, PRUint32 aID, tmTransactionManager *aTM);
00090 
00091   // Queue Operations
00092 
00110   nsresult AttachClient(PRUint32 aClientID);
00111 
00123   nsresult DetachClient(PRUint32 aClientID);
00124 
00134   nsresult FlushQueue(PRUint32 aClientID);
00135 
00154   nsresult PostTransaction(tmTransaction *aTrans);
00155 
00156   // Accessors
00157 
00161   PRUint32 GetID() const { return mID; }
00162 
00166   const char* GetName() const { return mName; }
00167 
00168 protected:
00169 
00171   // Protected Member Variables
00172 
00173   // storage
00174   tmVector mTransactions;     // transactions that have been posted
00175   tmVector mListeners;        // programs listening to this queue
00176 
00177   // bookkeeping
00178   PRUint32 mID;               // a number linked to the name in the mTM
00179   char *mName;                // format: [profilename][domainname(ie prefs)]
00180   tmTransactionManager *mTM;  // the container that holds the queue
00181 
00182 };
00183 
00184 #endif

Generated on Mon Feb 24 10:22:50 2003 for transaction manager by doxygen1.3-rc3