xref: /haiku/src/add-ons/kernel/file_systems/nfs4/RequestInterpreter.h (revision 25a7b01d15612846f332751841da3579db313082)
14a153753SPawel Dziepak /*
24a153753SPawel Dziepak  * Copyright 2012 Haiku, Inc. All rights reserved.
34a153753SPawel Dziepak  * Distributed under the terms of the MIT License.
44a153753SPawel Dziepak  *
54a153753SPawel Dziepak  * Authors:
64a153753SPawel Dziepak  *		Paweł Dziepak, pdziepak@quarnos.org
74a153753SPawel Dziepak  */
84a153753SPawel Dziepak #ifndef REQUESTINTERPRETER_H
94a153753SPawel Dziepak #define REQUESTINTERPRETER_H
104a153753SPawel Dziepak 
114a153753SPawel Dziepak 
124a153753SPawel Dziepak #include <SupportDefs.h>
134a153753SPawel Dziepak 
144a153753SPawel Dziepak #include "FileInfo.h"
154a153753SPawel Dziepak #include "NFS4Defs.h"
164a153753SPawel Dziepak #include "RPCCallbackRequest.h"
174a153753SPawel Dziepak 
184a153753SPawel Dziepak 
194a153753SPawel Dziepak class RequestInterpreter {
204a153753SPawel Dziepak public:
214a153753SPawel Dziepak 						RequestInterpreter(RPC::CallbackRequest* request);
224a153753SPawel Dziepak 						~RequestInterpreter();
234a153753SPawel Dziepak 
244a153753SPawel Dziepak 	inline	uint32		OperationCount();
254a153753SPawel Dziepak 	inline	uint32		Operation();
264a153753SPawel Dziepak 
27*224d6022SPawel Dziepak 			status_t	GetAttr(FileHandle* handle, int* mask);
284a153753SPawel Dziepak 			status_t	Recall(FileHandle* handle, bool& truncate,
294a153753SPawel Dziepak 							uint32* stateSeq, uint32* stateID);
304a153753SPawel Dziepak 
314a153753SPawel Dziepak private:
324a153753SPawel Dziepak 			uint32		fOperationCount;
334a153753SPawel Dziepak 			uint32		fLastOperation;
344a153753SPawel Dziepak 
354a153753SPawel Dziepak 			RPC::CallbackRequest*	fRequest;
364a153753SPawel Dziepak };
374a153753SPawel Dziepak 
384a153753SPawel Dziepak 
394a153753SPawel Dziepak inline uint32
OperationCount()404a153753SPawel Dziepak RequestInterpreter::OperationCount()
414a153753SPawel Dziepak {
424a153753SPawel Dziepak 	return fOperationCount;
434a153753SPawel Dziepak }
444a153753SPawel Dziepak 
454a153753SPawel Dziepak 
464a153753SPawel Dziepak inline uint32
Operation()474a153753SPawel Dziepak RequestInterpreter::Operation()
484a153753SPawel Dziepak {
494a153753SPawel Dziepak 	fLastOperation = fRequest->Stream().GetUInt();
504a153753SPawel Dziepak 	return fLastOperation;
514a153753SPawel Dziepak }
524a153753SPawel Dziepak 
534a153753SPawel Dziepak 
544a153753SPawel Dziepak #endif	// REQUESTINTERPRETER_H
554a153753SPawel Dziepak 
56