Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/src/winsock.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 50 by z0rac, Wed May 13 19:12:55 2009 UTC revision 51 by z0rac, Tue May 19 20:39:06 2009 UTC
# Line 30  public: Line 30  public:
30    static struct addrinfo* getaddrinfo(const string& host, const string& port);    static struct addrinfo* getaddrinfo(const string& host, const string& port);
31    static void freeaddrinfo(struct addrinfo* info) { _free(info); }    static void freeaddrinfo(struct addrinfo* info) { _free(info); }
32  public:  public:
33    // tls - transport layer security    // tcp - TCP client socket
34    class tls {    class tcpclient {
35        SOCKET _socket;
36        tcpclient(const tcpclient&); void operator=(const tcpclient&); // disable to copy
37      public:
38        tcpclient(SOCKET socket = INVALID_SOCKET) : _socket(socket) {}
39        ~tcpclient() { shutdown(); }
40        tcpclient& operator()(SOCKET s) { _socket = s; return *this; }
41        SOCKET release() { SOCKET s = _socket; _socket = INVALID_SOCKET; return s; }
42        operator SOCKET() const { return _socket; }
43        void connect(const string& host, const string& port, bool blocking = true);
44        void shutdown();
45        size_t recv(char* buf, size_t size);
46        size_t send(const char* data, size_t size);
47        bool wait(int op, int sec = -1);
48      };
49    
50      // tlsclient - transport layer security
51      class tlsclient {
52      CredHandle _cred;      CredHandle _cred;
53      CtxtHandle _ctx;      CtxtHandle _ctx;
54      SecPkgContext_StreamSizes _sizes;      SecPkgContext_StreamSizes _sizes;
55      bool _avail;      bool _avail;
56      string _readq;      string _recvq;
57      string::size_type _rest;      string::size_type _rest;
58      string _extra;      string _extra;
59      struct buf {      struct buf {
# Line 51  public: Line 68  public:
68      SECURITY_STATUS _token(SecBufferDesc* inb = NULL);      SECURITY_STATUS _token(SecBufferDesc* inb = NULL);
69      size_t _copyextra(size_t i, size_t size);      size_t _copyextra(size_t i, size_t size);
70    public:    public:
71      tls(DWORD proto = SP_PROT_SSL3 | SP_PROT_TLS1);      tlsclient(DWORD proto = SP_PROT_SSL3 | SP_PROT_TLS1);
72      virtual ~tls();      virtual ~tlsclient();
73      void connect();      void connect();
74      void shutdown();      void shutdown();
75      size_t read(char* buf, size_t size);      size_t recv(char* buf, size_t size);
76      size_t write(const char* data, size_t size);      size_t send(const char* data, size_t size);
77    protected:    protected:
78      virtual size_t _recv(char* buf, size_t size) = 0;      virtual size_t _recv(char* buf, size_t size) = 0;
79      virtual size_t _send(const char* data, size_t size) = 0;      virtual size_t _send(const char* data, size_t size) = 0;

Legend:
Removed from v.50  
changed lines
  Added in v.51

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26