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