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 1.3-rc3