]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved. | |
3 | * | |
4 | * The contents of this file constitute Original Code as defined in and are | |
5 | * subject to the Apple Public Source License Version 1.2 (the 'License'). | |
6 | * You may not use this file except in compliance with the License. Please obtain | |
7 | * a copy of the License at http://www.apple.com/publicsource and read it before | |
8 | * using this file. | |
9 | * | |
10 | * This Original Code and all software distributed under the License are | |
11 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS | |
12 | * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT | |
13 | * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR | |
14 | * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the | |
15 | * specific language governing rights and limitations under the License. | |
16 | */ | |
17 | ||
18 | ||
19 | // | |
20 | // protocol - generic interface to an access protocol | |
21 | // | |
22 | #ifndef _H_PROTOCOL | |
23 | #define _H_PROTOCOL | |
24 | ||
25 | #include <Security/ip++.h> | |
26 | #include "netmanager.h" | |
27 | ||
28 | using namespace IPPlusPlus; | |
29 | ||
30 | ||
31 | namespace Security { | |
32 | namespace Network { | |
33 | ||
34 | ||
35 | class Transfer; | |
36 | class Target; | |
37 | ||
38 | ||
39 | // | |
40 | // A Protocol object represents a particular transfer/access protocol. | |
41 | // | |
42 | class Protocol { | |
43 | public: | |
44 | Protocol(Manager &mgr, const char *prefix = NULL); | |
45 | virtual ~Protocol(); | |
46 | ||
47 | virtual const char *name() const; | |
48 | const char *urlPrefix() const { return mPrefix ? mPrefix : "?"; } | |
49 | ||
50 | typedef unsigned int Operation; | |
51 | enum { | |
52 | download = 1, // transfer data to sink | |
53 | upload = 2, // transfer data from source | |
54 | transaction = 3, // source-to-sink transaction mode | |
55 | ||
56 | protocolSpecific = 101 // starting here is protocol specific | |
57 | }; | |
58 | ||
59 | virtual Transfer *makeTransfer(const Target &target, Operation operation); | |
60 | ||
61 | Manager &manager; | |
62 | ||
63 | public: | |
64 | virtual bool isProxy() const; // true if this is a proxy protocol | |
65 | virtual const HostTarget &proxyHost() const; // proxy host if isProxy() | |
66 | ||
67 | private: | |
68 | const char *mPrefix; | |
69 | }; | |
70 | ||
71 | ||
72 | } // end namespace Network | |
73 | } // end namespace Security | |
74 | ||
75 | ||
76 | #endif /* _H_PROTOCOL */ |