1. Faio

Asynch I/O interface pack. $Log: flx_faio.pak,v $ Revision 1.33 2006/07/25 04:20:38 idadesub renamed rt_faio_01.flx test to faio_01.flx and added it to the rest of the faio tests, so that this test runs with the other faio tests sorted the results of the faio test Revision 1.32 2006/07/08 16:04:32 rfistman explicitly ignoring return val of SetErrorMode in flx_rtl.pak made configure script appear executable under cygwin/bash/fat32 removed simpleline_server which didn't do anything Revision 1.31 2006/07/05 09:40:34 skaller Fix nondeterministic tests to choose correct driver. Revision 1.30 2006/06/26 10:18:13 rfistman fixed a few typos "provide_lib" -> "provides_lib". this was stopping things building in the right order (e.g. libflx being built after the code that needed it). Revision 1.29 2006/05/03 11:07:51 rfistman added some url stuff to handle wget requests now spawning fthreads for each connection (works in windows?) Revision 1.28 2006/05/03 08:38:54 idadesub generating more documents. moved a couple of the rtl felix-specific projects into the flx_ namespace in order to keep things separate from the docs for other non-felix projects Revision 1.27 2006/05/02 11:51:08 rfistman added async posix file read to demo webserver. Revision 1.26 2006/04/30 07:53:23 rfistman web server now serves html files and gifs (on windows at least - the file -> socket stuff isn't set up so well on posix. it should be hooked into the async file io thread) Revision 1.25 2006/04/30 02:09:37 rfistman got rid of suckitnsee kqueue config (too complicated with pthread use) added a quitter to ts_select_demuxer to fix crash fixed string exception in demo web server caused by POSTs Revision 1.24 2006/04/26 10:38:52 rfistman demo web server now serving up text web pages. not right yet with binary stuff tho. Revision 1.23 2006/04/25 07:40:16 rfistman flx web server now does some basic get line/url parsing, still needs to open actual files and send them down the wire. Revision 1.22 2006/04/25 01:22:30 rfistman moved the socket getline stuff (temporarily) into Flx_socket. added a demo felix webserver (test/demo_webserver.flx). currently serves only a static file and does not yet parse the GET line. Revision 1.21 2006/04/23 06:38:54 rfistman fixed annoying "NULL is not a pointer" warning Revision 1.20 2006/04/23 06:32:27 rfistman named pipe and flx_socket tests now actually close their pipes & sockets when finished with them. this might explain some of the "resource temporarily unavilable"s that I get in windows. Revision 1.19 2006/04/23 06:09:15 rfistman fixed bug in async win32 ReadFile/WriteFile code - wasn't handling ERROR_IO_PENDING properly. Was also not opening files with FILE_FLAG_OVERLAPPED added actual io to windows named pipe example Revision 1.18 2006/04/23 05:06:17 rfistman added win32 named pipe example (only connects/accepts atm), still needs to call ReadFile/WriteFile and be moved into demux/faio Revision 1.17 2006/04/23 01:37:32 rfistman added flx_socket + flx_socket.flx. socket now not a stream, but can be converted into one if need be. converted rt_faio_01 to work with this. Revision 1.16 2006/04/09 17:36:56 idadesub added ctor type constructors for most of the builtin types. I also replaced the chr/wchr/uchr functions with the typename for char/wchar/uchar. I think I found all the usages of those functions, but it's possible I missed one or two. Revision 1.15 2006/04/09 06:18:14 rfistman beefed up flx_stream test. Revision 1.14 2006/04/09 05:14:53 rfistman fixed windows async io bindings - they haven't been compileable for a while, which shows how many tests we don't have. Revision 1.13 2006/04/08 08:18:34 rfistman fixed up flx_listener, working on portable regression test for tcp bug still at large in nocygwin flx_accept - hope it's portable! Revision 1.12 2006/03/29 23:18:13 rfistman WIP: flx_stream (i.e. portable) version of accept/create listener Revision 1.11 2006/03/25 01:27:31 skaller Add more stuff to gmp library binding. Start phasing config. Revision 1.10 2006/03/11 02:39:28 skaller Refactoring packaging structure. merge expected results of tests into the files containing the tests. Revision 1.9 2006/03/10 15:48:24 skaller Add pretty printer for C++. Revision 1.8 2006/03/06 15:08:08 skaller Cygwin and MinGW builds. Revision 1.7 2006/03/06 13:16:16 skaller Fix library builds so exports and imports are properly distinguished on a library by library basis. Revision 1.6 2006/03/06 01:29:29 skaller spawn_pthread: init works Revision 1.5 2006/02/28 02:07:13 skaller Refactor demux into demux + pthread. Revision 1.4 2006/02/26 06:39:36 skaller Fix flx_pkgconfig to conform to new spec. Revision 1.3 2006/02/25 20:38:12 skaller Upgrade flx_pkgconfig Revision 1.2 2006/02/23 19:33:01 skaller More fiddling with build system Revision 1.1 2006/02/22 17:36:48 skaller Rename some files.. more coming. Make RTL modules full .paks Revision 1.46 2006/02/19 16:04:57 skaller Win32 build changes..seems to work now Revision 1.45 2006/02/18 18:18:54 skaller Add requirement for demux to faio felix modules. For weird reason not needed on Linux, needed on Cygwin though. Linux is screwed up. Revision 1.44 2006/02/18 18:03:47 skaller Package manager fixes Revision 1.43 2006/02/18 16:30:48 skaller More work on new package manager. Revision 1.42 2006/02/17 09:38:32 skaller conditionalised recursive mutex (to be removed) fixed windows lib_requires (added lib prefix) Revision 1.41 2006/02/16 15:09:45 skaller MSVC++ package manager Revision 1.40 2006/02/16 07:51:40 skaller Replace pkg-config with a Felix program flx_pkgconfig. Make sure to build it in a timely manner, since flx script now depends on it. Revision 1.39 2006/02/15 10:54:09 skaller Build time packaging system. Revision 1.38 2006/02/10 04:40:26 skaller Win32 rtl patches Revision 1.37 2006/02/09 21:05:33 skaller Fixed sdl to use polling. Revision 1.36 2006/02/06 06:50:01 skaller Added pthread_cond_timedwait and pthread_cond_uswait functions to condition variables. The latter is my own invention, it waits for a specific interval in micro-seconds. The later is more efficient on Windows when you want to wait for an interval, since this is the native method. Otherwise you need to first obtain the time of day, do a nasty calculation .. and then the timedwait function will undo that, resulting in two unnecessary and expensive system calls. Revision 1.35 2006/02/02 08:30:17 rfistman got rid of annoying debug output/note to self regarding sigpipe on osx/bsd. made flx_rtl create async structure on demand, if only to avoid all that debug output in the simpler tests. Revision 1.34 2006/01/31 07:54:31 skaller Fix sdl206, make sleep_request FAIO_EXTERN Revision 1.33 2006/01/29 07:07:21 skaller fixed visual studio build after demux merge Revision 1.32 2006/01/29 05:58:08 rfistman fixed windows build (ming nocygwin) after merge Revision 1.31 2006/01/29 02:17:29 rfistman using latest demux, added epoll to flx_run (for linux). bugs fixed. Revision 1.28 2006/01/26 10:04:28 rfistman fixed failure to wake fthread after connects that finish immediately. this fast connect only ever shows up on solaris, so full marks to them. Revision 1.27 2006/01/25 00:34:40 rfistman removed a few outstanding references to SDL_image fixed a tiny typo in flx_use.ipk got rid of superfluous private fn in faio. Revision 1.26 2006/01/24 13:21:10 rfistman fixed race condition in posix asynchronous connect and made test output for same a little more obvious Revision 1.25 2006/01/18 05:50:04 rfistman turned sdl_event thing into a driver request Revision 1.24 2006/01/16 01:25:43 rfistman factored faio posix accept and connect back demux as control blocks removed pthread cancel from code - implicit cancel points are no longer used. instead the threads are convinced to return from their mains via specially formatted inputs. Revision 1.22 2006/01/08 03:44:13 rfistman fixed bogus SIGPIPE ignore warning added missing namespace to solaris evtport_demuxer.cpp file Revision 1.21 2006/01/07 17:24:57 skaller Added SDL binding. Fixed bug in function return type so that lvalue return types now return C++ references. Added _deref primitive, define deref to use it for Felix refs, and defined a primitive for C pointers. Revision 1.20 2006/01/05 23:27:00 rfistman added missing FLX_SOCKLEN_T dual CYGWIN WIN32 stuff commented out for now (not working needs further work) Revision 1.19 2006/01/05 04:00:35 rfistman fixed problem in solaris evtports where adding both reading and writing sockets caused a race condition (now we have two two "half-demuxers", for input and output) pc listener create function can now let winsock choose the port, just like the posix version. much factoring: overlapped calls factored back to demux as control blocks posix socket code factored in preparation for UDP/dgram and IPv6 sockets. Revision 1.18 2006/01/03 04:29:21 rfistman fixed win32 tests by a) initing winsock in flx_run and using the correct return value. Revision 1.17 2005/12/31 07:06:32 skaller Changed user statement parser so that special keywords expr, statement, statements, etc are only recognized parsing the preprocessor directives statement and nonterminal. Note ident is already a proper keyword for the macro processor though. Revision 1.16 2005/12/31 03:20:22 rfistman working on flx_stream stuff + writing tests Revision 1.15 2005/12/30 14:57:40 skaller Fix some win32 issues with namespaces. Revision 1.14 2005/12/30 04:39:32 skaller Fixed copipes to be 'portable' Revision 1.13 2005/12/29 18:16:04 skaller Namespaces and modules added .. Revision 1.12 2005/12/29 13:52:07 skaller Added log to rtl and faio.
Start data section to config/faio.fpc[1 /1 ]
     1: Name: faio
     2: Description: Asynchronous I/O support
     3: Version: $Id: flx_faio.pak,v 1.33 2006/07/25 04:20:38 idadesub Exp $
     4: provides_dlib: -lfaio_dynamic
     5: provides_slib: -lfaio_static
     6: Requires: demux
     7: 
End data section to config/faio.fpc[1]
Start python section to spkgs/faio.py[1 /1 ]
     1: #line 291 "./lpsrc/flx_faio.pak"
     2: FAIORTL_INTERFACES = [
     3:  'faio/faio_job.hpp',
     4:  'faio/faio_asyncio.hpp',
     5:  'faio/faio_drv.hpp',
     6:  'faio/faio_pdrv.hpp',
     7:  'faio/faio_wdrv.hpp',
     8:  'faio/faio_posixio.hpp',
     9:  'faio/faio_winio.hpp',
    10: ]
    11: 
    12: FAIO_CPPS = [
    13:   "faio/faio_job",
    14:   "faio/faio_asyncio",
    15:   "faio/faio_drv",
    16: ]
    17: 
    18: POSIX_FAIO_CPPS = [
    19:   "faio/faio_pdrv",
    20:   "faio/faio_posixio",
    21: ]
    22: 
    23: WINDOWS_FAIO_CPPS = [
    24:   "faio/faio_wdrv",
    25:   "faio/faio_winio",
    26: ]
    27: 
    28: EXTRA_TEST_GLOBS = glob.glob("test" + os.sep + "faio_*.flx")
    29: 
    30: if WIN32:
    31:   FAIO_CPPS = FAIO_CPPS + WINDOWS_FAIO_CPPS
    32:   EXTRA_TEST_GLOBS += glob.glob("test" + os.sep + "win_*.flx")
    33: 
    34: if POSIX:
    35:   FAIO_CPPS = FAIO_CPPS + POSIX_FAIO_CPPS
    36:   EXTRA_TEST_GLOBS += glob.glob("test" + os.sep + "posix_*.flx")
    37: 
    38: EXTRA_TEST_GLOBS.sort()
    39: 
    40: cpp_cpps = FAIO_CPPS
    41: rtl_interfaces = FAIORTL_INTERFACES
    42: pkg_requires = ['demux','flx_pthread', 'flx_rtl'] # flx_rtl for rtl_config.
    43: lib_requires = ['libdemux','libflx_pthread'] # however lib not required
    44: unit_tests = EXTRA_TEST_GLOBS
    45: iscr_source = ["lpsrc/flx_faio.pak"]
    46: build_macro = "FAIO"
    47: weaver_directory = 'doc/rtl/flx_faio/'
    48: 
End python section to spkgs/faio.py[1]
Start cpp section to rtl/flx_faio_config.hpp[1 /1 ]
     1: #line 340 "./lpsrc/flx_faio.pak"
     2: #ifndef __FLX_FAIO_CONFIG_GUARD__
     3: #define __FLX_FAIO_CONFIG_GUARD__
     4: #include "flx_rtl_config.hpp"
     5: #ifdef BUILD_FAIO
     6: #define FAIO_EXTERN FLX_EXPORT
     7: #else
     8: #define FAIO_EXTERN FLX_IMPORT
     9: #endif
    10: #endif
    11: 
End cpp section to rtl/flx_faio_config.hpp[1]