/**********************************************************************
This file is part of Crack dot Com's free source code release of Golgotha.
for information about compiling & licensing issues visit this URL
 If that doesn't help, contact Jonathan Clark at 
  golgotha_source@usa.net (Subject should have "GOLG" in it) 
***********************************************************************/

#ifndef I4_NET_SOCKET_HH
#define I4_NET_SOCKET_HH

#include "arch.hh"
#include "file/file.hh"

class i4_net_address;

class i4_net_socket : public i4_file_class
{
public:
  virtual i4_bool connect(i4_net_address *addr) { return i4_F; }

  virtual i4_bool accept(i4_net_socket *&sock, i4_net_address *&addr) = 0;

  virtual w32 read_from(void *buffer, w32 size, i4_net_address *&addr) = 0;

  virtual w32 read (void *buffer, w32 size) = 0;
  virtual w32 write(const void *buffer, w32 size) = 0;

  virtual i4_bool ready_to_read() = 0;
  virtual i4_bool ready_to_write() = 0;
  virtual i4_bool error_occurred() = 0;

  virtual w32 seek (w32 offset) { return 0; }
  virtual w32 size () { return 0; }
  virtual w32 tell () { return 0; }

  virtual void set_select_status(i4_bool read, i4_bool write, i4_bool error) = 0;

};


#endif