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