#ifndef MRFOX_SOCKET_H
#define MRFOX_SOCKET_H

#define MAXPACKETLEN 1024

typedef struct asocket asocket;

asocket *socket_connect(char *host, int port);
asocket *socket_listen(int port);
asocket *socket_accept(asocket *socket);

int socket_destroy(asocket * socket);
char *socket_info(asocket * socket);
char *socket_fullinfo(asocket * socket);
int socket_send(asocket * socket, void *buffer, int len);
int socket_sendline(asocket *socket, char *line);
int socket_recv(asocket * socket, void *buffer, int len);
int socket_recvline(asocket *socket, char *line, int len);


int socket_server_start_callback (asocket *socket, 
				  int (*connect_cb)(asocket *socket, 
						    void **user_data),
				  int (*read_cb)(asocket *socket,
						 void *user_data));

int socket_server_start_threaded (asocket *socket,
				  int (*connect_cb)(asocket *Socket,
						    void **user_data),
				  int (*start_cb)(asocket *socket,
						  void *user_data));
#endif
