
libemcast API
by David Helder
Copyright (C) 2001 Regents of the University of Michigan
============================================================

IN PROGRESS.  See libemcast.h and libemcast.c.  It's not complex.



Creating, joining, leaving
--------------------------

int emcast_join (Emcast** emcastp, const char* url);

int emcast_leave (Emcast* emcast);


To do async reads, select on return value of join.  Assume
(optimisticly) that writes don't block.



Sending and receiving
---------------------

int emcast_send (Emcast* emcast, const char* buf, size_t len);
int emcast_recv (Emcast* emcast, char* buf, size_t len);
int emcast_recvfrom (Emcast* emcast, char* buf, int len, 
		     void* from, size_t* fromlen);



Setting and getting options
---------------------------

int emcast_setopt (Emcast* emcast, const char* optname, 
		   const void* optval, size_t optlen);
int emcast_getopt (Emcast* emcast, const char* optname, 
		   void* optval, size_t* optlen);


Emcast errors
-------------

char*   emcast_strerror (int errnum);

Most functions return 0 on success or a non-zero error number on
failure.  This error number may be positive or negative (see the
documentation for the particular function).  The error number can be
converted to a constant string using emcast_strerror.
