Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 /*
7 ** Subclass definitions for network I/O (ref: prio.h)
8 */
10 #if defined(_RCNETIO_H)
11 #else
12 #define _RCNETIO_H
14 #include "rcbase.h"
15 #include "rcinrval.h"
16 #include "rcio.h"
17 #include "rcnetdb.h"
19 #include "prio.h"
21 class RCFileInfo;
23 /*
24 ** Class: RCNetStreamIO (ref prio.h)
25 **
26 ** Streamed (reliable) network I/O (e.g., TCP).
27 ** This class hides (makes private) the functions that are not applicable
28 ** to network I/O (i.e., those for file I/O).
29 */
31 class PR_IMPLEMENT(RCNetStreamIO): public RCIO
32 {
34 public:
35 RCNetStreamIO();
36 virtual ~RCNetStreamIO();
38 virtual RCIO* Accept(RCNetAddr* addr, const RCInterval& timeout);
39 virtual PRInt32 AcceptRead(
40 RCIO **nd, RCNetAddr **raddr, void *buf,
41 PRSize amount, const RCInterval& timeout);
42 virtual PRInt64 Available();
43 virtual PRStatus Bind(const RCNetAddr& addr);
44 virtual PRStatus Connect(
45 const RCNetAddr& addr, const RCInterval& timeout);
46 virtual PRStatus GetLocalName(RCNetAddr *addr) const;
47 virtual PRStatus GetPeerName(RCNetAddr *addr) const;
48 virtual PRStatus GetSocketOption(PRSocketOptionData *data) const;
49 virtual PRStatus Listen(PRIntn backlog);
50 virtual PRInt16 Poll(PRInt16 in_flags, PRInt16 *out_flags);
51 virtual PRInt32 Read(void *buf, PRSize amount);
52 virtual PRInt32 Recv(
53 void *buf, PRSize amount, PRIntn flags,
54 const RCInterval& timeout);
55 virtual PRInt32 Recvfrom(
56 void *buf, PRSize amount, PRIntn flags,
57 RCNetAddr* addr, const RCInterval& timeout);
58 virtual PRInt32 Send(
59 const void *buf, PRSize amount, PRIntn flags,
60 const RCInterval& timeout);
61 virtual PRInt32 Sendto(
62 const void *buf, PRSize amount, PRIntn flags,
63 const RCNetAddr& addr,
64 const RCInterval& timeout);
65 virtual PRStatus SetSocketOption(const PRSocketOptionData *data);
66 virtual PRStatus Shutdown(ShutdownHow how);
67 virtual PRInt32 TransmitFile(
68 RCIO *source, const void *headers,
69 PRSize hlen, RCIO::FileDisposition flags,
70 const RCInterval& timeout);
71 virtual PRInt32 Write(const void *buf, PRSize amount);
72 virtual PRInt32 Writev(
73 const PRIOVec *iov, PRSize size,
74 const RCInterval& timeout);
76 private:
77 /* functions unavailable to this clients of this class */
78 RCNetStreamIO(const RCNetStreamIO&);
80 PRStatus Close();
81 PRStatus Open(const char *name, PRIntn flags, PRIntn mode);
82 PRStatus FileInfo(RCFileInfo *info) const;
83 PRStatus Fsync();
84 PRInt64 Seek(PRInt64 offset, RCIO::Whence how);
86 public:
87 RCNetStreamIO(PRIntn protocol);
88 }; /* RCNetIO */
90 #endif /* defined(_RCNETIO_H) */
92 /* RCNetStreamIO.h */