1/*
2 * Copyright 2012 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Pawe�� Dziepak, pdziepak@quarnos.org
7 */
8#ifndef REQUEST_H
9#define REQUEST_H
10
11
12#include "ReplyInterpreter.h"
13#include "RequestBuilder.h"
14#include "RPCServer.h"
15
16
17struct Cookie;
18class FileSystem;
19
20class Request {
21public:
22	inline						Request(RPC::Server* server,
23									FileSystem* fileSystem);
24
25	inline	RequestBuilder&		Builder();
26	inline	ReplyInterpreter&	Reply();
27
28			status_t			Send(Cookie* cookie = NULL);
29			void				Reset();
30
31private:
32			status_t			_SendUDP(Cookie* cookie);
33			status_t			_SendTCP(Cookie* cookie);
34
35			RPC::Server*		fServer;
36			FileSystem*			fFileSystem;
37
38			RequestBuilder		fBuilder;
39			ReplyInterpreter	fReply;
40};
41
42
43inline
44Request::Request(RPC::Server* server, FileSystem* fileSystem)
45	:
46	fServer(server),
47	fFileSystem(fileSystem)
48{
49	ASSERT(server != NULL);
50}
51
52
53inline RequestBuilder&
54Request::Builder()
55{
56	return fBuilder;
57}
58
59
60inline ReplyInterpreter&
61Request::Reply()
62{
63	return fReply;
64}
65
66
67#endif	// REQUEST_H
68
69