00001 #ifndef __ALSAD_CHANNEL_LIST_H 00002 #define __ALSAD_CHANNEL_LIST_H 00003 00004 00005 #include <stdio.h> 00006 #include <stdlib.h> 00007 #include <unistd.h> 00008 #include <sys/time.h> 00009 #include "circ_buff.h" 00010 #include "alsad_net_lib.h" 00011 #include "alsad_shared_lib.h" 00012 #include "linked_list.h" 00013 00014 00015 struct alsad_channel_node{ 00016 int closing; 00017 alsad_audio_channel *audio_chan; 00018 circ_buff *audio_buff; 00019 linked_list *sources; 00020 linked_list *sinks; 00021 }; 00022 00023 typedef struct alsad_channel_node alsad_channel_node; 00024 00025 00026 struct alsad_channel_list{ 00027 int shutdown; 00028 linked_list *channels; 00029 }; 00030 00031 typedef struct alsad_channel_list alsad_channel_list; 00032 00033 00034 struct alsad_send_channel_list_args{ 00035 int sock; 00036 }; 00037 00038 typedef struct alsad_send_channel_list_args alsad_send_channel_list_args; 00039 00040 int alsad_channel_list_init(alsad_channel_list *new_list, 00041 unsigned int num_channels); 00042 00043 void alsad_channel_list_destroy(alsad_channel_list *destroy_list); 00044 00045 int alsad_channel_node_init(alsad_channel_node *new_channel_node, 00046 alsad_audio_channel *new_chan, 00047 alsad_config_keys *keys); 00048 00049 void alsad_channel_node_destroy(alsad_channel_node *destroy_chan); 00050 00051 alsad_channel_node *alsad_channel_list_insert( 00052 alsad_channel_list *head_of_list, 00053 alsad_channel_node *new_chan_node); 00054 00055 alsad_channel_node* alsad_channel_list_remove( 00056 alsad_channel_list *head_of_list, 00057 unsigned int ident); 00058 00059 alsad_channel_node *alsad_channel_find(alsad_channel_list *head_of_list, 00060 unsigned int ident); 00061 00062 //Leaving out until I know if I need it 00063 //void alsad_print_channel_list(alsad_channel_list *head_of_list); 00064 00065 int alsad_send_channel_list(int sock, alsad_channel_list *head_of_list); 00066 00067 int alsad_channel_node_compare(void *identifier, void *channel_node); 00068 00069 int alsad_channel_send_channel_nodes(void *channel_node, void *args); 00070 00071 #endif