/* WebDownloader for X-Window
* Copyright (C) 1999-2002 Koshelev Maxim
* This Program is free but not GPL!!! You can't modify it
* without agreement with author. You can't distribute modified
* program but you can distribute unmodified program.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#ifndef D4X_SOCKET_HEADER
#define D4X_SOCKET_HEADER
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <sys/time.h>
#include <fcntl.h>
#include <glib.h>
#include <boost/smart_ptr.hpp>
#include "speed.h"
/*
#include <stdexcept>
namespace d4x{
class NetException:public std::runtime_error{
};
class StopException:public std::runtime_error{
};
};
*/
class tSocket{
protected:
fd_set set;
int fd;
sockaddr_in info;
hostent hp;
int temp_variable;
int con_flag;
char *buffer;
int RBytes,SBytes;
bool constr_name(const char *host,guint16 port);
int wait_for_read(int len);
int wait_for_write(int len);
bool connect_impl();
virtual fsize_t lowlevel_read(char *where,fsize_t len);
public:
tSocket();
virtual unsigned int get_addr();
virtual unsigned short int get_port();
int readed_bytes();
virtual int open_any(const char * host);
virtual int open_any(guint32 host);
virtual int accepting(const char * host);
virtual int open_port(const char * host,guint16 port);
virtual int open_port(guint32 host,guint16 port);
int open_port(int *ftp_addr);
int direct_send(char *what);
virtual int send_string(const char *what,int timeout);
fsize_t rec_string(char * where,fsize_t len,int timeout);
void flush();
int connected();
virtual void down();
virtual ~tSocket();
};
namespace d4x{
typedef boost::shared_ptr<tSocket> SocketPtr;
};
#define SOCKET_UNKNOWN_HOST -1
#define SOCKET_CANT_ALLOCATE -2
#define SOCKET_CANT_CONNECT -3
int my_get_host_by_name(const char *host,
int port,
sockaddr_in *info,
hostent *hp,
char *buf,
int bufsize,
int *rvalbuf);
#endif
syntax highlighted by Code2HTML, v. 0.9.1