+extern void dccp_send_init(struct sender *);
+extern void http_send_init(struct sender *);
+extern void ortp_send_init(struct sender *);
+
+/** the list of supported senders */
+struct sender senders[] = {
+ {
+ .name = "http",
+ .init = http_send_init,
+ },
+ {
+ .name = "dccp",
+ .init = dccp_send_init,
+ },
+#ifdef HAVE_ORTP
+ {
+ .name = "ortp",
+ .init = ortp_send_init,
+ },
+#endif
+ {
+ .name = NULL,
+ }
+};
+
+/** The possible states of the afs socket. See \ref afs_socket. */
+enum afs_socket_status {
+ /** Socket is inactive. */
+ AFS_SOCKET_READY,
+ /** Socket fd was included in the write fd set for select(). */
+ AFS_SOCKET_CHECK_FOR_WRITE,
+ /** vss wrote a request to the socket and waits for afs to reply. */
+ AFS_SOCKET_AFD_PENDING
+};
+
+
+struct vss_task {
+ struct timeval announce_tv;
+ struct timeval data_send_barrier;
+ struct timeval eof_barrier;
+ struct timeval autoplay_barrier;
+ enum afs_socket_status afsss;
+ char *map;
+};
+
+static struct vss_task vss_task_struct, *vsst = &vss_task_struct;