/usr/include/wvstreams/wvtcp.h is in libwvstreams-dev 4.6.1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | /* -*- Mode: C++ -*-
* Worldvisions Weaver Software:
* Copyright (C) 1997-2002 Net Integration Technologies, Inc.
*
* WvStream-based TCP connection and server classes.
*/
#ifndef __WVTCP_H
#define __WVTCP_H
#include "wvautoconf.h"
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# if HAVE_STDLIB_H
# include <stdlib.h>
# endif
#endif
#if HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#include "wvfdstream.h"
#include "wvaddr.h"
#include "wvresolver.h"
class WvTCPListener;
/**
* WvTCPConn tries to make all outgoing connections asynchronously (in
* the background). You can tell the connection has been established
* when a select() call returns 'true' with writable==true.
*/
class WvTCPConn : public WvFDStream
{
friend class WvTCPListener;
protected:
bool resolved, connected;
WvString hostname;
bool incoming;
WvIPPortAddr remaddr;
WvResolver dns;
/** Start a WvTCPConn on an already-open socket (used by WvTCPListener) */
WvTCPConn(int _fd, const WvIPPortAddr &_remaddr);
/** Connect to the remote end - note the "Protected" above ;) */
void do_connect();
/** Resolve the remote address, if it was fed in non-IP form */
void check_resolver();
public:
/**
* WvTCPConn tries to make all outgoing connections asynchronously (in
* the background). You can tell the connection has been established
* when a select() call returns 'true' with writable==true.
*/
WvTCPConn(const WvIPPortAddr &_remaddr);
/** Resolve the hostname, then connect a new socket */
WvTCPConn(WvStringParm _hostname, uint16_t _port = 0);
/**
* Destructor - rarely do you need to call this - close()
* is a much better way to tear down a TCP Stream ;)
*/
virtual ~WvTCPConn();
/**
* function to set up a TCP socket the way we like
* (Read/Write, Non-Blocking, KeepAlive)
*/
void nice_tcpopts();
/**
* function to set up a TCP socket the way we like
* In addition to the nice_tcpopts(), set TCP_NODELAY
*/
void low_delay();
/**
* function to set up a TCP socket the way we *don't* like: turn the
* timeouts way down so that network errors show up easily for debugging
*/
void debug_mode();
/**
* the local address of this socket (ie. from getsockname())
* really useful only for transparent proxies, but always available.
* may be 0.0.0.0 if we did not bind explicitly!
*/
WvIPPortAddr localaddr();
/**
* return the remote address (source of all incoming packets),
* which is a constant for any given TCP connection.
*/
virtual const WvIPPortAddr *src() const;
/** has the connection been completed yet? */
bool isconnected() const
{ return connected; }
/** override pre_select() to cause select() results when resolving names. */
virtual void pre_select(SelectInfo &si);
/**
* override post_select() to set the 'connected' variable as soon as we
* are connected.
*/
virtual bool post_select(SelectInfo &si);
/**
* Is this connection OK?
* Note: isok() will always be true if !resolved, even though fd==-1.
*/
virtual bool isok() const;
protected:
virtual size_t uwrite(const void *buf, size_t count);
public:
const char *wstype() const { return "WvTCPConn"; }
};
#endif // __WVTCP_H
|