*** empty log message ***
This commit is contained in:
@ -27,7 +27,7 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: platform.hpp,v 1.4 2004/07/16 23:54:45 mpc Exp $
|
* $Id: platform.hpp,v 1.5 2004/07/22 03:54:01 mpc Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -56,6 +56,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstdarg>
|
#include <cstdarg>
|
||||||
|
#include <cstddef>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -65,10 +66,12 @@
|
|||||||
#ifndef WINTHREAD
|
#ifndef WINTHREAD
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <stdint.h> // TODO replace with Boost's version
|
||||||
#include <string>
|
#include <string>
|
||||||
#if defined WINSOCK || defined WINTHREAD
|
#if defined WINSOCK || defined WINTHREAD
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
#include "types.hpp"
|
||||||
|
|
||||||
#endif // LIBSOCKTHREAD_PLATFORM_HPP
|
#endif // LIBSOCKTHREAD_PLATFORM_HPP
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: socket.cpp,v 1.7 2004/07/22 03:54:01 mpc Exp $
|
* $Id: socket.cpp,v 1.8 2004/07/22 22:08:20 mpc Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "platform.hpp"
|
#include "platform.hpp"
|
||||||
@ -35,10 +35,38 @@
|
|||||||
#include "socket.hpp"
|
#include "socket.hpp"
|
||||||
using namespace Libsockthread;
|
using namespace Libsockthread;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Closes the socket
|
||||||
|
*/
|
||||||
|
void Socket::close()
|
||||||
|
{
|
||||||
|
if (sock != SERR) {
|
||||||
|
if (close(sock) == -1)
|
||||||
|
; // FIXME log the error
|
||||||
|
}
|
||||||
|
sock = SERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Changes the address associated with the socket
|
||||||
|
*/
|
||||||
|
void Socket::set_addr(Socket_addr& addr)
|
||||||
|
{
|
||||||
|
close();
|
||||||
|
this->addr = addr;
|
||||||
|
setup_socket();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prepares the socket for use
|
||||||
|
*/
|
||||||
void Socket::setup_socket()
|
void Socket::setup_socket()
|
||||||
{
|
{
|
||||||
|
assert(sock == SERR); // the descriptor shouldn't be active
|
||||||
if (!addr.is_ready())
|
if (!addr.is_ready())
|
||||||
throw Socket_error("Socket isn't ready");
|
throw Socket_error("Couldn't create socket: address isn't ready");
|
||||||
|
|
||||||
sock = socket(addr.get_family(), get_type(), 0);
|
sock = socket(addr.get_family(), addr.get_type(), 0);
|
||||||
|
if (sock == SERR)
|
||||||
|
throw Socket_error(strerror(errno));
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: socket.hpp,v 1.7 2004/07/22 03:54:01 mpc Exp $
|
* $Id: socket.hpp,v 1.8 2004/07/22 22:08:20 mpc Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef LIBSOCKTHREAD_SOCKET_HPP
|
#ifndef LIBSOCKTHREAD_SOCKET_HPP
|
||||||
@ -36,19 +36,32 @@
|
|||||||
namespace Libsockthread {
|
namespace Libsockthread {
|
||||||
class Socket {
|
class Socket {
|
||||||
public:
|
public:
|
||||||
|
#ifdef WINSOCK
|
||||||
|
typedef SOCKET socket_t;
|
||||||
|
enum { SERR = SOCKET_ERROR };
|
||||||
|
#else
|
||||||
|
typedef int socket_t;
|
||||||
|
enum { SERR = -1 };
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Socket()
|
||||||
|
: addr(), sock(SERR) {}
|
||||||
Socket(Socket_addr& addr) // throws Socket_error
|
Socket(Socket_addr& addr) // throws Socket_error
|
||||||
: addr(addr) { setup_socket(); }
|
: addr(addr), sock(SERR) { setup_socket(); }
|
||||||
|
|
||||||
void close();
|
void close();
|
||||||
size_t read(string& buf, size_t max);
|
size_t read(vector<uchar_t>& buf, size_t max = 0);
|
||||||
void set_addr(Socket_addr& addr) // throws Socket_error
|
size_t read_until(vector<uchar_t>& buf, uchar_t delim = '\n');
|
||||||
{ this->addr = addr; setup_socket(); }
|
void set_addr(Socket_addr& addr); // throws Socket_error
|
||||||
void set_blocking(bool blocking);
|
void set_blocking(bool blocking);
|
||||||
|
size_t write(vector<uchar_t>& buf);
|
||||||
|
void write_all(vector<uchar_t>& buf);
|
||||||
|
size_t write_until(vector<uchar_t& buf, uchar_t delim = '\n');
|
||||||
private:
|
private:
|
||||||
void setup_socket(); // throws Socket_error
|
void setup_socket(); // throws Socket_error
|
||||||
|
|
||||||
Socket_addr addr;
|
Socket_addr addr;
|
||||||
int sock;
|
socket_t sock;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
45
apps/enclave/libsockthread/src/types.hpp
Normal file
45
apps/enclave/libsockthread/src/types.hpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the author nor the names of any contributors
|
||||||
|
* may be used to endorse or promote products derived from this software
|
||||||
|
* without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||||
|
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||||
|
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LIBSOCKTHREAD_TYPES_HPP
|
||||||
|
#define LIBSOCKTHREAD_TYPES_HPP
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Shorten some standard variable types
|
||||||
|
*/
|
||||||
|
typedef signed char schar_t;
|
||||||
|
typedef unsigned char uchar_t;
|
||||||
|
typedef unsigned int uint_t;
|
||||||
|
typedef unsigned long ulong_t;
|
||||||
|
typedef unsigned short ushort_t;
|
||||||
|
|
||||||
|
#endif // LIBSOCKTHREAD_TYPES_HPP
|
Reference in New Issue
Block a user