kmediad 0.5.0a
A cross-platform Web-based audio player
Data Structures
Here are the data structures with brief descriptions:
_khttpd_ResponseA class that wraps an HTTP response, and provides methods to set headers, etc
_khttpd_ServerA class implementing a general-purpose HTTP server, with file retrieval and hooks to integrate the handling of non-file requests
_klib_ArrayA fixed-sized array of anything which is derived from klib_object
_klib_AssocArrayAn associative array of klib_object, indexed by string keys
_klib_ErrorAn object representing an error -- instantiated by any klib method can fail (in lieu of proper exception handling in C)
_klib_HttpRequestAn object which models an HTTP request URI
_klib_HttpResponseAn object which models an HTTP response
_klib_IntegerAn object which wraps a simple integer, so it can be used in a klib_List or klib_Array
_klib_JSONParserAn object which provides a JSON parser
_klib_ListA singly-linked list of any object derived from klib_Object
_klib_ListItemWraps individual objects in a klib_List
_klib_NVPairA name-value pair, where the name is char*, and the value any subclass of klib_Object
_klib_ObjectThe basic basic structure underling all klib objects
_klib_PathA filesystem path, modelled in a platform-agnostic way
_klib_PropsFileA properties file -- essentially a klib_AssocArray with additional methods to read and write contents to and from a file
_klib_SocketWraps a TCP socket, providing convenience functions for reading and writing klib objects from a TCP stream
_klib_StringA variable-length text string in UTF-8 encoding. The string is automatically expanded if required. NULL is an acceptable value for a string, and operations done on NULL strings are generally safe -- the NULL value is silently converted to an empty string when this happens. This conversion is not done in the _new() methods -- a NULL passed to _new() cretes a valid NULL string. However, methods whose names end in _safe() will always upgrade a NULL string to an empty String, so that clients classes need not do specific NULL checks themselves
_kmediad_AlbumAn object that holds information about an album -- artist, composer etc
_kmediad_DatabaseA wrapper for the sqlite3 database that kmediad uses for media information. All media items are index according to their location in the media directory tree. Typically finding an item in the database involves creating a kmediad_MediaInfo object, initializing its path field, and calling kmediad_database_get_mi_from_path
_kmediad_MediaInfoModels a single row in the media database table. The fields title, album, composer, etc., do what they say. The path field is the location of the item in the media directory tree; this is also used as an index to the media database
_kmediad_MediaScannerA class that implements a scanner for directories containing media files. The scanner descends the directories recursively, parsing ID3 and FLAC tags, and extracting embedded album are. This class is intended to be used in a separate thread or process, as the operation is likely to take a long time on large collections
_kmediad_SearchConstraintsModels search constraints in a way that can be converted to and from a URI in a web browser or other client. Each constraint is represented by a kmediad_SearchOp object in the list 'ops'. The search contraints can be applied distjuncively (OR) or conjunctively (AND). Obviously this syntax is not as powerful as SQL, but it's safer and more elegant than passing SQL queries in HTTP requests
_kmediad_SearchOpModels a single search operation, in a list of search operations
_kmediad_ServerThe HTTP server implementation that is specific to kmediad
_XineInterfaceA class that wraps the Xine media player engine, and provides convenience functions for interfacing it to klib applications
CmdAn entry in the function table that maps command names used int the HTTP interface with methods calls on kmediad_CmdProc
kmediad_CmdProcThe command processor
kmediad_GuiThe graphical user interface
TagModels a single ID3 tag
TagDataA linked list of Tag objects