00001 #ifndef __ALSAD_DATA_PIPE_LIST_H 00002 #define __ALSAD_DATA_PIPE_LIST_H 00003 00014 #include <stdio.h> 00015 #include <stdlib.h> 00016 #include <unistd.h> 00017 #include <sys/time.h> 00018 #include "alsad_net_lib.h" 00019 #include "linked_list.h" 00020 00021 00022 struct alsad_data_pipe_node{ 00023 int closing; 00024 unsigned long long thread_byte_id; 00025 alsad_data_pipe_t *pipe; 00026 }; 00027 00028 typedef struct alsad_data_pipe_node alsad_data_pipe_node_t; 00029 00030 00031 struct alsad_data_pipe_list{ 00032 linked_list_t *pipe_list; 00033 }; 00034 00035 typedef struct alsad_data_pipe_list alsad_data_pipe_list_t; 00036 00037 00038 struct alsad_data_pipe_list_send_args{ 00039 int sock; 00040 int code; 00041 }; 00042 00043 typedef struct alsad_data_pipe_list_send_args alsad_data_pipe_list_send_args_t; 00044 00045 00046 int alsad_data_pipe_list_init(alsad_data_pipe_list_t *new_list, 00047 unsigned int num_data_pipes); 00048 00049 void alsad_data_pipe_list_destroy(alsad_data_pipe_list_t *destroy_list); 00050 00051 int alsad_data_pipe_node_init(alsad_data_pipe_node_t **new_data_pipe_node, 00052 alsad_data_pipe_t *new_data_pipe); 00053 00054 void alsad_data_pipe_node_destroy(alsad_data_pipe_node_t *destroy_pipe_node); 00055 00056 alsad_data_pipe_node_t *alsad_data_pipe_list_insert( 00057 alsad_data_pipe_list_t *list, 00058 alsad_data_pipe_node_t *new_node); 00059 00060 00061 alsad_data_pipe_node_t* alsad_data_pipe_list_remove( 00062 alsad_data_pipe_list_t *list, 00063 unsigned int ident); 00064 00065 alsad_data_pipe_node_t *alsad_data_pipe_list_find(alsad_data_pipe_list_t *list, 00066 unsigned int ident); 00067 00068 00069 unsigned long alsad_data_pipe_find_slowest(alsad_data_pipe_list_t *list, 00070 unsigned long global_byte_id); 00071 00072 00073 int alsad_data_pipe_list_send(int sock, alsad_data_pipe_list_t *list, int code); 00074 00075 int alsad_data_pipe_node_send_pipe(void *data_pipe, void *args); 00076 00077 int alsad_data_pipe_node_compare_equal(void *identifier, void *data_pipe_node); 00078 00079 int alsad_data_pipe_node_compare_greater_than(void *data_pipe_node_a, 00080 void *data_pipe_node_b, 00081 void *args); 00082 00086 #endif