nsprpub/pr/src/cplus/rcnetio.h

Wed, 31 Dec 2014 06:55:46 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:46 +0100
changeset 1
ca08bd8f51b2
permissions
-rw-r--r--

Added tag TORBROWSER_REPLICA for changeset 6474c204b198

     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 */

mercurial