ptypes

ptypes Mercurial Source Tree


Root/doc/include/pinet.h.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<!--
Syntax highlighting generated by Web C Plus Plus software v0.8.4
Webcpp Copyright (C)2001-2004 Jeffrey Bakker under the GNU GPL
Get webcpp at http://webcpp.sf.net
-->
 
<html>
<head>
<title>pinet.h</title>
<style type="text/css">
 
/*
Webcpp v0.8.1 compatible StyleSheet
Theme: ide-msvcpp
*/
 
body
{
background-color: #ffffff
}
 
.webcpp a:link    {color:#000000}
.webcpp a:visited {color:#008000}
.webcpp a:active  {color:#0000ff}
.webcpp a:hover   {color:#0000ff}
 
.webcpp pre
{
color: #000000
}
 
.webcpp font
{
font-size:100%
}
 
.webcpp .symbols
{
color: #000000
}
 
.webcpp .preproc
{
color: #0000ff
}
 
.webcpp .integer
{
color: #000000
}
 
.webcpp .floatpt
{
color: #000000
}
 
.webcpp .dblquot
{
color: #000000
}
 
.webcpp .sinquot
{
color: #000000
}
 
.webcpp .keyword
{
color: #0000ff;
 
}
 
.webcpp .keytype
{
color: #0000ff;
 
}
 
.webcpp .comment
{
color: #008000;
 
}
 
</style>
</head>
<body bgcolor="#FFFFFF" leftmargin="40" marginwidth="40"> <p><a href="../htsrc.html">Index</a><hr noshade></p>
 
<div class="webcpp">
<pre>
 
 
<font CLASS=preproc>#ifndef</font> __PINET_H__
<font CLASS=preproc>#define</font> __PINET_H__
 
<font CLASS=preproc>#ifndef</font> __PPORT_H__
<font CLASS=preproc>#include</font> <font CLASS=dblquot>"pport.h"</font>
<font CLASS=preproc>#endif</font>
 
<font CLASS=preproc>#ifndef</font> __PTYPES_H__
<font CLASS=preproc>#include</font> <font CLASS=dblquot>"ptypes.h"</font>
<font CLASS=preproc>#endif</font>
 
<font CLASS=preproc>#ifndef</font> __PSTREAMS_H__
<font CLASS=preproc>#include</font> <font CLASS=dblquot>"pstreams.h"</font>
<font CLASS=preproc>#endif</font>
 
 
<font CLASS=preproc>#ifdef</font> WIN32
<font CLASS=preproc>#</font>  include <winsock2.h>
<font CLASS=preproc>#else</font>
<font CLASS=preproc>#</font>  include <netdb.h>       <font CLASS=comment>// for socklen_t </font>
<font CLASS=preproc>#</font>  include <sys/types.h>
<font CLASS=preproc>#</font>  include <sys/socket.h>
<font CLASS=preproc>#endif</font>
 
 
PTYPES_BEGIN
 
 
<font CLASS=preproc>#ifdef</font> _MSC_VER
<font CLASS=preproc>#pragma</font> pack(push, <font CLASS=integer>4</font>)
<font CLASS=preproc>#endif</font>
 
 
<font CLASS=comment>//</font>
<font CLASS=comment>// BSD-compatible socket error codes for Win32</font>
<font CLASS=comment>//</font>
 
<font CLASS=preproc>#if</font> defined(WSAENOTSOCK) && !defined(ENOTSOCK)
 
<font CLASS=preproc>#define</font> EWOULDBLOCK             WSAEWOULDBLOCK
<font CLASS=preproc>#define</font> EINPROGRESS             WSAEINPROGRESS
<font CLASS=preproc>#define</font> EALREADY                WSAEALREADY
<font CLASS=preproc>#define</font> ENOTSOCK                WSAENOTSOCK
<font CLASS=preproc>#define</font> EDESTADDRREQ            WSAEDESTADDRREQ
<font CLASS=preproc>#define</font> EMSGSIZE                WSAEMSGSIZE
<font CLASS=preproc>#define</font> EPROTOTYPE              WSAEPROTOTYPE
<font CLASS=preproc>#define</font> ENOPROTOOPT             WSAENOPROTOOPT
<font CLASS=preproc>#define</font> EPROTONOSUPPORT         WSAEPROTONOSUPPORT
<font CLASS=preproc>#define</font> ESOCKTNOSUPPORT         WSAESOCKTNOSUPPORT
<font CLASS=preproc>#define</font> EOPNOTSUPP              WSAEOPNOTSUPP
<font CLASS=preproc>#define</font> EPFNOSUPPORT            WSAEPFNOSUPPORT
<font CLASS=preproc>#define</font> EAFNOSUPPORT            WSAEAFNOSUPPORT
<font CLASS=preproc>#define</font> EADDRINUSE              WSAEADDRINUSE
<font CLASS=preproc>#define</font> EADDRNOTAVAIL           WSAEADDRNOTAVAIL
<font CLASS=preproc>#define</font> ENETDOWN                WSAENETDOWN
<font CLASS=preproc>#define</font> ENETUNREACH             WSAENETUNREACH
<font CLASS=preproc>#define</font> ENETRESET               WSAENETRESET
<font CLASS=preproc>#define</font> ECONNABORTED            WSAECONNABORTED
<font CLASS=preproc>#define</font> ECONNRESET              WSAECONNRESET
<font CLASS=preproc>#define</font> ENOBUFS                 WSAENOBUFS
<font CLASS=preproc>#define</font> EISCONN                 WSAEISCONN
<font CLASS=preproc>#define</font> ENOTCONN                WSAENOTCONN
<font CLASS=preproc>#define</font> ESHUTDOWN               WSAESHUTDOWN
<font CLASS=preproc>#define</font> ETOOMANYREFS            WSAETOOMANYREFS
<font CLASS=preproc>#define</font> ETIMEDOUT               WSAETIMEDOUT
<font CLASS=preproc>#define</font> ECONNREFUSED            WSAECONNREFUSED
<font CLASS=preproc>#define</font> ELOOP                   WSAELOOP
<font CLASS=comment>// #define ENAMETOOLONG            WSAENAMETOOLONG</font>
<font CLASS=preproc>#define</font> EHOSTDOWN               WSAEHOSTDOWN
<font CLASS=preproc>#define</font> EHOSTUNREACH            WSAEHOSTUNREACH
<font CLASS=comment>// #define ENOTEMPTY               WSAENOTEMPTY</font>
<font CLASS=preproc>#define</font> EPROCLIM                WSAEPROCLIM
<font CLASS=preproc>#define</font> EUSERS                  WSAEUSERS
<font CLASS=preproc>#define</font> EDQUOT                  WSAEDQUOT
<font CLASS=preproc>#define</font> ESTALE                  WSAESTALE
<font CLASS=preproc>#define</font> EREMOTE                 WSAEREMOTE
 
<font CLASS=comment>// NOTE: these are not errno constants in UNIX!</font>
<font CLASS=preproc>#define</font> HOST_NOT_FOUND          WSAHOST_NOT_FOUND
<font CLASS=preproc>#define</font> TRY_AGAIN               WSATRY_AGAIN
<font CLASS=preproc>#define</font> NO_RECOVERY             WSANO_RECOVERY
<font CLASS=preproc>#define</font> NO_DATA                 WSANO_DATA
 
<font CLASS=preproc>#endif</font>
 
 
<font CLASS=comment>// shutdown() constants</font>
 
<font CLASS=preproc>#if</font> defined(SD_RECEIVE) && !defined(SHUT_RD)
<font CLASS=preproc>#</font>  define SHUT_RD       SD_RECEIVE
<font CLASS=preproc>#</font>  define SHUT_WR       SD_SEND
<font CLASS=preproc>#</font>  define SHUT_RDWR     SD_BOTH
<font CLASS=preproc>#endif</font>
 
 
<font CLASS=comment>// max backlog value for listen()</font>
 
<font CLASS=preproc>#ifndef</font> SOMAXCONN
<font CLASS=preproc>#</font>  define SOMAXCONN <font CLASS=symbols>-</font><font CLASS=integer>1</font>
<font CLASS=preproc>#endif</font>
 
<font CLASS=keyword>typedef</font> <font CLASS=keytype>char</font>* sockval_t;
 
<font CLASS=preproc>#ifndef</font> WIN32
<font CLASS=preproc>#</font>  define closesocket close
<font CLASS=preproc>#endif</font>
 
 
<font CLASS=preproc>#if</font> (defined(__DARWIN__) && !defined(_SOCKLEN_T)) <font CLASS=symbols>||</font> defined(WIN32) <font CLASS=symbols>||</font> defined(__hpux)
  <font CLASS=keyword>typedef</font> <font CLASS=keytype>int</font> psocklen;
<font CLASS=preproc>#else</font>
  <font CLASS=keyword>typedef</font> socklen_t psocklen;
<font CLASS=preproc>#endif</font>
 
 
<font CLASS=comment>// -------------------------------------------------------------------- //</font>
<font CLASS=comment>// ---  IP address class and DNS utilities ---------------------------- //</font>
<font CLASS=comment>// -------------------------------------------------------------------- //</font>
 
<font CLASS=comment>//</font>
<font CLASS=comment>// IP address</font>
<font CLASS=comment>//</font>
 
<font CLASS=keyword>struct</font> ipaddress
{
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    <font CLASS=keyword>union</font>
    {
        uchar   data[<font CLASS=integer>4</font>];
        ulong   ldata;
    };
    ipaddress()                                 {}
    ipaddress(ulong a)                          { ldata <font CLASS=symbols>=</font> a; }
    ipaddress(<font CLASS=keyword>const</font> ipaddress& a)               { ldata <font CLASS=symbols>=</font> a.ldata; }
    ipaddress(<font CLASS=keytype>int</font> a, <font CLASS=keytype>int</font> b, <font CLASS=keytype>int</font> c, <font CLASS=keytype>int</font> d);
    ipaddress& <font CLASS=keyword>operator</font><font CLASS=symbols>=</font> (ulong a)              { ldata <font CLASS=symbols>=</font> a; <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; }
    ipaddress& <font CLASS=keyword>operator</font><font CLASS=symbols>=</font> (<font CLASS=keyword>const</font> ipaddress& a)   { ldata <font CLASS=symbols>=</font> a.ldata; <font CLASS=keyword>return</font> *<font CLASS=keyword>this</font>; }
    uchar& <font CLASS=keyword>operator</font> [] (<font CLASS=keytype>int</font> i)                  { <font CLASS=keyword>return</font> data[i]; }
    <font CLASS=keyword>operator</font> ulong() <font CLASS=keyword>const</font>                      { <font CLASS=keyword>return</font> ldata; }
};
 
 
<font CLASS=keyword>extern</font> ipaddress ipnone;
<font CLASS=keyword>extern</font> ipaddress ipany;
<font CLASS=keyword>extern</font> ipaddress ipbcast;
 
 
<font CLASS=comment>//</font>
<font CLASS=comment>// IP peer info: host name, IP and the port name</font>
<font CLASS=comment>// used internally in ipstream and ipmessage</font>
<font CLASS=comment>//</font>
 
 
<font CLASS=keyword>class</font> ippeerinfo: public noncopyable
{
<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>
    ipaddress ip;         <font CLASS=comment>// target IP</font>
    string    host;       <font CLASS=comment>// target host name; either IP or hostname must be specified</font>
    <font CLASS=keytype>int</font>       port;       <font CLASS=comment>// target port number</font>
 
    <font CLASS=keytype>void</font>      notfound(); <font CLASS=comment>// throws a (estream*) exception</font>
 
    <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> psockname(<font CLASS=keytype>int</font>, ippeerinfo&);
 
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    ippeerinfo();
    ippeerinfo(ipaddress iip, <font CLASS=keyword>const</font> string& ihost, <font CLASS=keytype>int</font> iport);
 
    ipaddress get_ip();     <font CLASS=comment>// resolves the host name if necessary (only once)</font>
    string    get_host();   <font CLASS=comment>// performs reverse-lookup if necessary (only once)</font>
    <font CLASS=keytype>int</font>       get_port()    { <font CLASS=keyword>return</font> port; }
    <font CLASS=keytype>void</font>      clear();
    string    asstring(<font CLASS=keytype>bool</font> showport) <font CLASS=keyword>const</font>;
};
 
 
string    iptostring(ipaddress ip);
ipaddress phostbyname(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* name);
string    phostbyaddr(ipaddress ip);
string    phostcname(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* name);
 
<font CLASS=comment>// internal utilities</font>
<font CLASS=keytype>int</font> usockerrno();
<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* usockerrmsg(<font CLASS=keytype>int</font> code);
<font CLASS=keytype>bool</font> psockwait(<font CLASS=keytype>int</font> handle, <font CLASS=keytype>int</font> timeout);
<font CLASS=keytype>bool</font> psockname(<font CLASS=keytype>int</font> handle, ippeerinfo&);
 
 
<font CLASS=comment>// -------------------------------------------------------------------- //</font>
<font CLASS=comment>// ---  TCP socket classes -------------------------------------------- //</font>
<font CLASS=comment>// -------------------------------------------------------------------- //</font>
 
 
<font CLASS=comment>// additional IO status codes</font>
 
<font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_RESOLVING  <font CLASS=symbols>=</font> <font CLASS=integer>10</font>;
<font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_RESOLVED   <font CLASS=symbols>=</font> <font CLASS=integer>11</font>;
<font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_CONNECTING <font CLASS=symbols>=</font> <font CLASS=integer>20</font>;
<font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_CONNECTED  <font CLASS=symbols>=</font> <font CLASS=integer>21</font>;
 
 
<font CLASS=comment>//</font>
<font CLASS=comment>// ipstream</font>
<font CLASS=comment>//</font>
 
<font CLASS=keyword>class</font> ipstream: public fdxstm, <font CLASS=keyword>public</font> ippeerinfo
{
    <font CLASS=keyword>friend</font> <font CLASS=keyword>class</font> ipstmserver;
 
<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>
    <font CLASS=keytype>int</font> svsocket;   <font CLASS=comment>// server socket descriptor, used internally by ipstmserver</font>
 
<font CLASS=preproc>#ifdef</font> WIN32
    // sockets are not compatible with file handles on Windows
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawread(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawwrite(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);
<font CLASS=preproc>#endif</font>
 
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font>  uerrno();
    <font CLASS=keyword>virtual</font> <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* uerrmsg(<font CLASS=keytype>int</font> code);
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doopen();
    <font CLASS=keyword>virtual</font> large doseek(large newpos, ioseekmode mode);
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doclose();
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> sockopt(<font CLASS=keytype>int</font> socket);
    <font CLASS=keytype>void</font> closehandle();
 
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    ipstream();
    ipstream(ipaddress ip, <font CLASS=keytype>int</font> port);
    ipstream(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* host, <font CLASS=keytype>int</font> port);
    ipstream(<font CLASS=keyword>const</font> string& host, <font CLASS=keytype>int</font> port);
    <font CLASS=keyword>virtual</font> ~ipstream();
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> classid();
 
    <font CLASS=keyword>virtual</font> string get_streamname();
 
    <font CLASS=keytype>bool</font>      waitfor(<font CLASS=keytype>int</font> timeout);
    ipaddress get_myip();
    <font CLASS=keytype>int</font>       get_myport();
    <font CLASS=keytype>void</font>      set_ip(ipaddress);
    <font CLASS=keytype>void</font>      set_host(<font CLASS=keyword>const</font> string&);
    <font CLASS=keytype>void</font>      set_host(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*);
    <font CLASS=keytype>void</font>      set_port(<font CLASS=keytype>int</font>);
};
 
 
<font CLASS=comment>//</font>
<font CLASS=comment>// common internal interfaces for ipstmserver and ipmsgserver</font>
<font CLASS=comment>//</font>
 
<font CLASS=keyword>class</font> ipbindinfo: <font CLASS=keyword>public</font> unknown, <font CLASS=keyword>public</font> ippeerinfo
{
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    <font CLASS=keytype>int</font> handle;
 
    ipbindinfo(ipaddress iip, <font CLASS=keyword>const</font> string& ihost, <font CLASS=keytype>int</font> iport);
    <font CLASS=keyword>virtual</font> ~ipbindinfo();
};
 
 
<font CLASS=keyword>class</font> ipsvbase: public unknown
{
<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>
    <font CLASS=keytype>int</font>     socktype;
    <font CLASS=keytype>bool</font>    active;
    tobjlist<ipbindinfo> addrlist;       <font CLASS=comment>// list of local socket addresses to bind to</font>
 
    <font CLASS=keytype>void</font> error(ippeerinfo& peer, <font CLASS=keytype>int</font> code, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* defmsg);
    <font CLASS=keytype>bool</font> dopoll(<font CLASS=keytype>int</font>* i, <font CLASS=keytype>int</font> timeout);
    <font CLASS=keytype>void</font> setupfds(<font CLASS=keytype>void</font>* set, <font CLASS=keytype>int</font> i);
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> open();
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> close();
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dobind(ipbindinfo*) <font CLASS=symbols>=</font> <font CLASS=integer>0</font>;
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> sockopt(<font CLASS=keytype>int</font> socket);
 
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    ipsvbase(<font CLASS=keytype>int</font> isocktype);
    <font CLASS=keyword>virtual</font> ~ipsvbase();
 
    <font CLASS=keytype>int</font> bind(ipaddress ip, <font CLASS=keytype>int</font> port);
    <font CLASS=keytype>int</font> bindall(<font CLASS=keytype>int</font> port);
 
    <font CLASS=keytype>int</font> get_addrcount()                  { <font CLASS=keyword>return</font> addrlist.get_count(); }
    <font CLASS=keyword>const</font> ipbindinfo& get_addr(<font CLASS=keytype>int</font> i)    { <font CLASS=keyword>return</font> *addrlist[i]; }
    <font CLASS=keytype>void</font> clear();
};
 
 
<font CLASS=comment>//</font>
<font CLASS=comment>// ipstmserver</font>
<font CLASS=comment>//</font>
 
<font CLASS=keyword>class</font> ipstmserver: public ipsvbase
{
<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dobind(ipbindinfo*);
 
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    ipstmserver();
    <font CLASS=keyword>virtual</font> ~ipstmserver();
 
    <font CLASS=keytype>bool</font> poll(<font CLASS=keytype>int</font> i <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>, <font CLASS=keytype>int</font> timeout = <font CLASS=integer>0</font>);
    <font CLASS=keytype>bool</font> serve(ipstream& client, <font CLASS=keytype>int</font> i <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>, <font CLASS=keytype>int</font> timeout = -<font CLASS=integer>1</font>);
};
 
 
<font CLASS=comment>// -------------------------------------------------------------------- //</font>
<font CLASS=comment>// ---  UDP socket classes -------------------------------------------- //</font>
<font CLASS=comment>// -------------------------------------------------------------------- //</font>
 
 
<font CLASS=comment>//</font>
<font CLASS=comment>// ipmessage</font>
<font CLASS=comment>//</font>
 
<font CLASS=keyword>class</font> ipmessage: public unknown, <font CLASS=keyword>public</font> ippeerinfo
{
<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>
    <font CLASS=keytype>int</font> handle;
 
    <font CLASS=keytype>void</font> error(<font CLASS=keytype>int</font> code, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* msg);
    <font CLASS=keytype>void</font> open();
    <font CLASS=keytype>void</font> close();
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> sockopt(<font CLASS=keytype>int</font> socket);
 
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    ipmessage();
    ipmessage(ipaddress ip, <font CLASS=keytype>int</font> port);
    ipmessage(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* host, <font CLASS=keytype>int</font> port);
    ipmessage(<font CLASS=keyword>const</font> string& host, <font CLASS=keytype>int</font> port);
    <font CLASS=keyword>virtual</font> ~ipmessage();
 
    <font CLASS=keytype>void</font> set_ip(ipaddress iip);
    <font CLASS=keytype>void</font> set_host(<font CLASS=keyword>const</font> string&);
    <font CLASS=keytype>void</font> set_host(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*);
    <font CLASS=keytype>void</font> set_port(<font CLASS=keytype>int</font>);
    ipaddress get_myip();
    <font CLASS=keytype>int</font> get_myport();
    <font CLASS=keytype>int</font> get_handle()                            { <font CLASS=keyword>return</font> handle; }
 
    <font CLASS=keytype>bool</font>   waitfor(<font CLASS=keytype>int</font> timeout);
    <font CLASS=keytype>int</font>    receive(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count, ipaddress& src);
    <font CLASS=keytype>int</font>    receive(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);
    string receive(<font CLASS=keytype>int</font> max, ipaddress& src);
    string receive(<font CLASS=keytype>int</font> max);
    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);
    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> string& s)                { send(s, length(s)); }
};
 
 
<font CLASS=comment>//</font>
<font CLASS=comment>// ipmsgserver</font>
<font CLASS=comment>//</font>
 
<font CLASS=keyword>class</font> ipmsgserver: public ipsvbase, <font CLASS=keyword>public</font> ippeerinfo
{
<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>
    <font CLASS=keytype>int</font> handle;
 
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> close();
    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dobind(ipbindinfo*);
 
<font CLASS=preproc><font CLASS=keyword>public</font>:</font>
    ipmsgserver();
    <font CLASS=keyword>virtual</font> ~ipmsgserver();
 
    <font CLASS=keytype>int</font> get_handle()                            { <font CLASS=keyword>return</font> handle; }
 
    <font CLASS=keytype>bool</font>   poll(<font CLASS=keytype>int</font> i <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>, <font CLASS=keytype>int</font> timeout = <font CLASS=integer>0</font>);
    <font CLASS=keytype>int</font>    receive(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);
    string receive(<font CLASS=keytype>int</font> max);
    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);
    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> string& s)                { send(s, length(s)); }
    <font CLASS=keytype>void</font>   sendto(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count, ipaddress ip, <font CLASS=keytype>int</font> port);
    <font CLASS=keytype>void</font>   sendto(<font CLASS=keyword>const</font> string& s, ipaddress ip, <font CLASS=keytype>int</font> port)
                                                { sendto(s, length(s), ip, port); }
};
 
 
<font CLASS=preproc>#ifdef</font> _MSC_VER
<font CLASS=preproc>#pragma</font> pack(pop)
<font CLASS=preproc>#endif</font>
 
 
PTYPES_END
 
 
<font CLASS=preproc>#endif</font> <font CLASS=comment>// __PINET_H__ </font>
 
 
 
 
</pre>
 
</div>
 
 
<hr noshade></body>
</html>
Source at commit 8edbcdac0d39 created 11 years 11 months ago.
By Nathan Adams, initial commit

Archive Download this file

Branches

Tags

Page rendered in 1.31981s using 11 queries.