00001 #ifndef __ALSAD_STREAM_LIST_H
00002 #define __ALSAD_STREAM_LIST_H
00003
00004
00017 #include <stdio.h>
00018 #include <stdlib.h>
00019 #include <unistd.h>
00020 #include <sys/time.h>
00021 #include "circ_buff.h"
00022 #include "alsad_net_lib.h"
00023 #include "alsad_shared_lib.h"
00024 #include "alsad_data_pipe_list.h"
00025
00026
00027 struct alsad_stream_node{
00028 int closing;
00029 alsad_stream_props_t *stream_props;
00030 circ_buff_t *audio_circ_buff;
00031 alsad_data_pipe_list_t sources;
00032 alsad_data_pipe_list_t sinks;
00033 };
00034
00035 typedef struct alsad_stream_node alsad_stream_node_t;
00036
00037
00038 struct alsad_stream_list{
00039 int shutdown;
00040 linked_list_t *streams;
00041 };
00042
00043 typedef struct alsad_stream_list alsad_stream_list_t;
00044
00045
00046 struct alsad_send_stream_list_args{
00047 int sock;
00048 };
00049
00050 typedef struct alsad_send_stream_list_args alsad_send_stream_list_args_t;
00051
00052 int alsad_stream_list_init(alsad_stream_list_t *new_list,
00053 unsigned int num_streams);
00054
00055 void alsad_stream_list_destroy(alsad_stream_list_t *destroy_list);
00056
00057 int alsad_stream_node_init(alsad_stream_node_t **new_stream_node,
00058 alsad_stream_props_t *new_chan,
00059 alsad_config_keys_t *keys);
00060
00061 void alsad_stream_node_destroy(alsad_stream_node_t *destroy_chan);
00062
00063 alsad_stream_node_t *alsad_stream_list_insert(
00064 alsad_stream_list_t *head_of_list,
00065 alsad_stream_node_t *new_chan_node);
00066
00067 alsad_stream_node_t* alsad_stream_list_remove(
00068 alsad_stream_list_t *head_of_list,
00069 unsigned int ident);
00070
00071 alsad_stream_node_t *alsad_stream_list_find(alsad_stream_list_t *head_of_list,
00072 unsigned int ident);
00073
00074
00075
00076
00077 int alsad_stream_list_send(int sock, alsad_stream_list_t *head_of_list);
00078
00079 int alsad_stream_list_send_pipes(int sock, alsad_stream_list_t *list,
00080 unsigned int ident);
00081 int alsad_stream_node_compare(void *identifier, void *stream_node);
00082
00083 int alsad_stream_send_stream_nodes(void *stream_node, void *args);
00084
00085
00088 #endif