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  

tmTransaction.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 _tmTransaction_H_
00039 #define _tmTransaction_H_
00040 
00041 #include "tmUtils.h"
00042 
00044 //
00045 // Message format
00046 //
00047 // |------------------------------------|\
00048 // |Action - Post/Flush/Attach etc      | \
00049 // |------------------------------------|  |
00050 // |QueueID                             |  |- this is the tmMsg
00051 // |------------------------------------|  |
00052 // |Status                              | / 
00053 // |------------------------------------|/
00054 // |Message Data                        |
00055 // |------------------------------------|
00056 //
00057 // The Attach call is a special case in that it doesn't have a QueueID yet. A
00058 //   QueueID will be 0's. The message Data will be the Queue Name String which
00059 //   will be the profile name with a domain attached, a domain being 
00060 //   [prefs|cookies|etc]
00061 //
00063 
00068 struct tmMsg {
00069   PRUint32 queueID;
00070   PRUint32 action;
00071   nsresult status;
00072 };
00073 
00079 class tmTransaction
00080 {
00081 
00082 public:
00083 
00085   // Constructor(s) & Destructor
00086 
00088   tmTransaction(): mData(), mMessage(nsnull), mMessageLength(0),
00089                    mOwnerID(0) { ;}
00090 
00092   virtual ~tmTransaction();
00093 
00095   // Public Member Functions
00096 
00097   // Initializers
00098 
00111   nsresult Init(PRUint32 aClientIPCID,
00112                 const PRUint8 *aRawMessage,
00113                 PRUint32 aLength);
00114 
00121   nsresult Init(PRUint32 aClientIPCID,
00122                 PRUint32 aID,
00123                 PRUint32 aAction,
00124                 nsresult aStatus);
00125 
00137   nsresult Init(PRUint32 aClientIPCID,
00138                 PRUint32 aID,
00139                 PRUint32 aAction,
00140                 nsresult aStatus,
00141                 const PRUint8 *aMessage,
00142                 PRUint32 aLength);
00143 
00144   // accessors
00145 
00149   const PRUint8* GetMessage() const { return mMessage; }
00150 
00154   PRUint32 GetMessageLength() const { return mMessageLength; }
00155 
00156   // mData accessors
00157 
00161   PRUint32 GetQueueID() const { return mData.queueID; }
00162 
00166   PRUint32 GetAction() const { return mData.action; }
00167 
00172   nsresult GetStatus() const { return mData.status; }
00173 
00183   PRUint8* GetRawMessage() const;
00184 
00188   PRUint32 GetRawMessageLength() const { 
00189     return (sizeof(tmMsg) + mMessageLength); 
00190   }
00191 
00196   PRUint32 GetOwnerID() const { return mOwnerID; }
00197 
00201   void SetQueueID(PRUint32 aID) { mData.queueID = aID; }
00202 
00203 protected:
00204 
00206   // Protected Member Functions
00207 
00217   nsresult SetMessage(const PRUint8 *aMessage, PRUint32 aLength);
00218 
00229   nsresult SetRawMessage(const PRUint8 *aRawMessage, PRUint32 aLength);
00230 
00232   // Protected Member Variables
00233 
00234   tmMsg    mData;              // struct containing type,id,status flags
00235   PRUint8 *mMessage;           // actual data to be processed by the clients
00236   PRUint32 mMessageLength;     // length of mMessage
00237   PRUint32 mOwnerID;           // client who sent this trans. - a IPC ClientID
00238 
00239 };
00240 
00241 #endif

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