DAO_DLL int DaoBase_OnLoad( DaoVmSpace *vmSpace, DaoNamespace *ns ) { DaoNamespace *testns = DaoNamespace_GetNamespace( ns, "test" ); DaoNamespace *basens = DaoNamespace_GetNamespace( testns, "base" ); DaoNamespace_WrapFunctions( testns, testFuncs ); DaoNamespace_WrapFunctions( basens, baseFuncs ); DMutex_Init( &test_mtx ); return 0; }
DAO_DLL int DaoCGI_OnLoad( DaoVmSpace *vmSpace, DaoNamespace *ns ) { DaoProcess *process = DaoVmSpace_AcquireProcess( vmSpace ); DaoMap *httpENV, *httpGET, *httpPOST, *httpFILE, *httpCOOKIE; DaoMap *httpGETS, *httpPOSTS; srand( time(NULL) ); vmMaster = vmSpace; ns = DaoNamespace_GetNamespace( ns, "cgi" ); daox_type_namestream = DaoNamespace_DefineType( ns, "tuple<file:string,size:int,data:io::FileStream>", "HttpUpload" ); daox_type_filemap = DaoNamespace_DefineType( ns, "map<string,HttpUpload>", NULL ); DaoNamespace_WrapFunctions( ns, cgiMeths ); httpENV = DaoMap_New(1+rand()); httpGET = DaoMap_New(1+rand()); httpPOST = DaoMap_New(1+rand()); httpFILE = DaoMap_New(1+rand()); httpCOOKIE = DaoMap_New(1+rand()); httpGETS = DaoMap_New(1+rand()); httpPOSTS = DaoMap_New(1+rand()); DaoNamespace_AddValue( ns, "HTTP_ENV", (DaoValue*)httpENV, "map<string,string>" ); DaoNamespace_AddValue( ns, "HTTP_GET", (DaoValue*)httpGET, "map<string,string>" ); DaoNamespace_AddValue( ns, "HTTP_POST", (DaoValue*)httpPOST, "map<string,string>" ); DaoNamespace_AddValue( ns, "HTTP_FILE", (DaoValue*)httpFILE, "map<string,HttpUpload>" ); DaoNamespace_AddValue( ns, "HTTP_COOKIE", (DaoValue*)httpCOOKIE, "map<string,string>"); DaoNamespace_AddValue( ns,"HTTP_GETS",(DaoValue*)httpGETS,"map<string,list<string>>"); DaoNamespace_AddValue( ns,"HTTP_POSTS",(DaoValue*)httpPOSTS,"map<string,list<string>>"); // Prepare HTTP_ENV: ParseKeyValueStringArray( process, httpENV, environ ); // Prepare HTTP_GET: char *query = getenv( "QUERY_STRING" ); if( query == NULL ) { /* lighttpd does not set "QUERY_STRING": */ query = getenv( "REQUEST_URI" ); if( query ) query = strchr( query, '?' ); if( query ) query += 1; } if( query ) ParseKeyValueString( process, httpGETS, httpGET, query ); query = getenv( "HTTP_COOKIE" ); if( query ) ParseKeyValueString( process, NULL, httpCOOKIE, query ); PreparePostData( process, httpPOSTS, httpPOST, httpFILE ); DaoVmSpace_ReleaseProcess( vmSpace, process ); return 0; }
DAO_DLL int DaoZip_OnLoad( DaoVmSpace *vmSpace, DaoNamespace *ns ) { ns = DaoNamespace_GetNamespace( ns, "zip" ); DaoNamespace_WrapFunctions( ns, zipMeths ); return 0; }