xref: /aoo42x/main/store/source/storlckb.hxx (revision aac4b212)
11a5fa39bSAndrew Rist /**************************************************************
2*aac4b212Smseidel  *
31a5fa39bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
41a5fa39bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
51a5fa39bSAndrew Rist  * distributed with this work for additional information
61a5fa39bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
71a5fa39bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
81a5fa39bSAndrew Rist  * "License"); you may not use this file except in compliance
91a5fa39bSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*aac4b212Smseidel  *
111a5fa39bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*aac4b212Smseidel  *
131a5fa39bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
141a5fa39bSAndrew Rist  * software distributed under the License is distributed on an
151a5fa39bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
161a5fa39bSAndrew Rist  * KIND, either express or implied.  See the License for the
171a5fa39bSAndrew Rist  * specific language governing permissions and limitations
181a5fa39bSAndrew Rist  * under the License.
19*aac4b212Smseidel  *
201a5fa39bSAndrew Rist  *************************************************************/
211a5fa39bSAndrew Rist 
221a5fa39bSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _STORE_STORLCKB_HXX_
25b9fd132dSpfg #define _STORE_STORLCKB_HXX_ "$Revision$"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "sal/types.h"
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include "rtl/ustring.h"
30cdf0e10cSrcweir #include "rtl/ref.hxx"
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include "object.hxx"
33cdf0e10cSrcweir #include "storbase.hxx"
34cdf0e10cSrcweir #include "storpage.hxx"
35cdf0e10cSrcweir 
36cdf0e10cSrcweir namespace store
37cdf0e10cSrcweir {
38cdf0e10cSrcweir 
39cdf0e10cSrcweir struct OStoreDataPageData;
40cdf0e10cSrcweir struct OStoreDirectoryPageData;
41cdf0e10cSrcweir 
42cdf0e10cSrcweir /*========================================================================
43cdf0e10cSrcweir  * OStoreLockBytes interface.
44cdf0e10cSrcweir  *======================================================================*/
45cdf0e10cSrcweir class OStoreLockBytes : public store::OStoreObject
46cdf0e10cSrcweir {
47cdf0e10cSrcweir public:
48cdf0e10cSrcweir 	/** Construction.
49cdf0e10cSrcweir 	 */
50cdf0e10cSrcweir 	OStoreLockBytes (void);
51cdf0e10cSrcweir 
52cdf0e10cSrcweir 	/** create (two-phase construction).
53cdf0e10cSrcweir 	 *  @param  pManager [in]
54cdf0e10cSrcweir 	 *  @param  pPath [in]
55cdf0e10cSrcweir 	 *  @param  pName [in]
56cdf0e10cSrcweir 	 *  @param  eMode [in]
57cdf0e10cSrcweir 	 *  @return store_E_None upon success
58cdf0e10cSrcweir 	 */
59cdf0e10cSrcweir 	storeError create (
60cdf0e10cSrcweir 		OStorePageManager *pManager,
61cdf0e10cSrcweir 		rtl_String        *pPath,
62cdf0e10cSrcweir 		rtl_String        *pName,
63cdf0e10cSrcweir 		storeAccessMode    eAccessMode);
64cdf0e10cSrcweir 
65cdf0e10cSrcweir 	/** Read at Offset into Buffer.
66cdf0e10cSrcweir 	 *  @param  nOffset [in]
67cdf0e10cSrcweir 	 *  @param  pBuffer [out]
68cdf0e10cSrcweir 	 *  @param  nBytes [in]
69cdf0e10cSrcweir 	 *  @param  rnDone [out]
70cdf0e10cSrcweir 	 *  @return store_E_None upon success
71cdf0e10cSrcweir 	 */
72cdf0e10cSrcweir 	storeError readAt (
73cdf0e10cSrcweir 		sal_uInt32  nOffset,
74cdf0e10cSrcweir 		void       *pBuffer,
75cdf0e10cSrcweir 		sal_uInt32  nBytes,
76cdf0e10cSrcweir 		sal_uInt32 &rnDone);
77cdf0e10cSrcweir 
78cdf0e10cSrcweir 	/** Write at Offset from Buffer.
79cdf0e10cSrcweir 	 *  @param  nOffset [in]
80cdf0e10cSrcweir 	 *  @param  pBuffer [in]
81cdf0e10cSrcweir 	 *  @param  nBytes [in]
82cdf0e10cSrcweir 	 *  @param  rnDone [out]
83cdf0e10cSrcweir 	 *  @return store_E_None upon success
84cdf0e10cSrcweir 	 */
85cdf0e10cSrcweir 	storeError writeAt (
86cdf0e10cSrcweir 		sal_uInt32  nOffset,
87cdf0e10cSrcweir 		const void *pBuffer,
88cdf0e10cSrcweir 		sal_uInt32  nBytes,
89cdf0e10cSrcweir 		sal_uInt32 &rnDone);
90cdf0e10cSrcweir 
91cdf0e10cSrcweir 	/** flush.
92cdf0e10cSrcweir 	 *  @return store_E_None upon success
93cdf0e10cSrcweir 	 */
94cdf0e10cSrcweir 	storeError flush (void);
95cdf0e10cSrcweir 
96cdf0e10cSrcweir 	/** setSize.
97cdf0e10cSrcweir 	 *  @param  nSize [in]
98cdf0e10cSrcweir 	 *  @return store_E_None upon success
99cdf0e10cSrcweir 	 */
100cdf0e10cSrcweir 	storeError setSize (sal_uInt32 nSize);
101cdf0e10cSrcweir 
102cdf0e10cSrcweir 	/** stat.
103*aac4b212Smseidel 	 *  @param  rnSize [out]
104cdf0e10cSrcweir 	 *  @return store_E_None upon success
105cdf0e10cSrcweir 	 */
106cdf0e10cSrcweir 	storeError stat (sal_uInt32 &rnSize);
107cdf0e10cSrcweir 
108cdf0e10cSrcweir 	/** IStoreHandle.
109cdf0e10cSrcweir 	 */
110cdf0e10cSrcweir 	virtual sal_Bool SAL_CALL isKindOf (sal_uInt32 nMagic);
111cdf0e10cSrcweir 
112cdf0e10cSrcweir protected:
113cdf0e10cSrcweir 	/** Destruction (OReference).
114cdf0e10cSrcweir 	 */
115cdf0e10cSrcweir 	virtual ~OStoreLockBytes (void);
116cdf0e10cSrcweir 
117cdf0e10cSrcweir private:
118cdf0e10cSrcweir 	/** IStoreHandle TypeId.
119cdf0e10cSrcweir 	 */
120cdf0e10cSrcweir 	static const sal_uInt32 m_nTypeId;
121cdf0e10cSrcweir 
122cdf0e10cSrcweir 	/** IStoreHandle query() template specialization.
123cdf0e10cSrcweir 	 */
124cdf0e10cSrcweir 	friend OStoreLockBytes*
125cdf0e10cSrcweir 	SAL_CALL query<> (IStoreHandle *pHandle, OStoreLockBytes*);
126cdf0e10cSrcweir 
127cdf0e10cSrcweir 	/** Representation.
128cdf0e10cSrcweir 	 */
129cdf0e10cSrcweir 	rtl::Reference<OStorePageManager> m_xManager;
130cdf0e10cSrcweir 
131cdf0e10cSrcweir 	typedef OStoreDataPageData        data;
132cdf0e10cSrcweir 	typedef OStoreDirectoryPageData   inode;
133cdf0e10cSrcweir 
134*aac4b212Smseidel 	typedef PageHolderObject< inode > inode_holder_type;
135*aac4b212Smseidel 	inode_holder_type                 m_xNode;
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 	bool m_bWriteable;
138cdf0e10cSrcweir 
139cdf0e10cSrcweir 	/** Not implemented.
140cdf0e10cSrcweir 	 */
141cdf0e10cSrcweir 	OStoreLockBytes (const OStoreLockBytes&);
142cdf0e10cSrcweir 	OStoreLockBytes& operator= (const OStoreLockBytes&);
143cdf0e10cSrcweir };
144cdf0e10cSrcweir 
145cdf0e10cSrcweir template<> inline OStoreLockBytes*
query(IStoreHandle * pHandle,OStoreLockBytes *)146cdf0e10cSrcweir SAL_CALL query (IStoreHandle *pHandle, OStoreLockBytes*)
147cdf0e10cSrcweir {
148cdf0e10cSrcweir 	if (pHandle && pHandle->isKindOf (OStoreLockBytes::m_nTypeId))
149cdf0e10cSrcweir 	{
150cdf0e10cSrcweir 		// Handle is kind of OStoreLockBytes.
151cdf0e10cSrcweir 		return static_cast<OStoreLockBytes*>(pHandle);
152cdf0e10cSrcweir 	}
153cdf0e10cSrcweir 	return 0;
154cdf0e10cSrcweir }
155cdf0e10cSrcweir 
156cdf0e10cSrcweir } // namespace store
157cdf0e10cSrcweir 
158cdf0e10cSrcweir #endif /* !_STORE_STORLCKB_HXX_ */
159cdf0e10cSrcweir 
160*aac4b212Smseidel /* vim: set noet sw=4 ts=4: */
161