00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _MP3SPLT_SOCKET_MANAGER_H
00033
00034 #if defined(__BEOS__) && (IPPROTO_UDP==1)
00035
00036 #else
00037 #ifndef __WIN32__
00038 #define closesocket close
00039 #endif
00040 #endif
00041
00042 typedef struct {
00043 int error;
00044 #ifdef __WIN32__
00045 SOCKET fd;
00046 #else
00047 int fd;
00048 #endif
00049 char *hostname;
00050 } splt_socket_handler;
00051
00052 typedef struct {
00053 int (*functor)(const char *received_line, int line_number, void *user_data);
00054 void *user_data;
00055 int processing_headers;
00056 int num_lines_to_skip;
00057 int line_number_after_headers;
00058 int line_number;
00059 } splt_sm_functor_decorator;
00060
00061 splt_socket_handler *splt_sm_socket_handler_new(int *error);
00062 void splt_sm_socket_handler_free(splt_socket_handler **sh);
00063
00064 void splt_sm_connect(splt_socket_handler *sh, const char *hostname, int port,
00065 splt_state *state);
00066 void splt_sm_send_http_message(splt_socket_handler *sh, const char *message,
00067 splt_state *state);
00068
00069 void splt_sm_receive_and_process_without_headers(splt_socket_handler *sh, splt_state *state,
00070 int (*process_functor)(const char *received_line, int line_number, void *user_data),
00071 void *user_data, int number_of_lines_to_skip_after_headers);
00072 void splt_sm_receive_and_process_without_headers_with_recv(splt_socket_handler *sh,
00073 splt_state *state,
00074 ssize_t (*recv_func)(int fd, void *buf, size_t len, int flags),
00075 int (*process_functor)(const char *received_line, int line_number, void *user_data),
00076 void *user_data, int number_of_lines_to_skip_after_headers);
00077 void splt_sm_receive_and_process(splt_socket_handler *sh, splt_state *state,
00078 int (*process_functor)(const char *received_line, int line_number, void *user_data),
00079 void *user_data);
00080 void splt_sm_receive_and_process_with_recv(splt_socket_handler *sh, splt_state *state,
00081 ssize_t (*recv_func)(int fd, void *buf, size_t len, int flags),
00082 int (*process_functor)(const char *received_line, int line_number, void *user_data),
00083 void *user_data);
00084
00085 void splt_sm_close(splt_socket_handler *sh, splt_state *state);
00086
00087 #define _MP3SPLT_SOCKET_MANAGER_H
00088 #endif
00089