/** ** ============================== ** OOOO O O OOOO ** O O O O O O O ** O O O O O O O ** OOOO OOOO O OOO OOOO ** O O O O O O O ** O O O O O O O ** OOOO OOOO O O OOOO ** ============================== ** Dr. Stefan Bosse http://www.bsslab.de ** ** COPYRIGHT: THIS SOFTWARE, EXECUTABLE AND SOURCE CODE IS OWNED ** BY THE AUTHOR(S). ** THIS SOURCE CODE MAY NOT BE COPIED, EXTRACTED, ** MODIFIED, OR OTHERWISE USED IN A CONTEXT ** OUTSIDE OF THE SOFTWARE SYSTEM. ** ** $AUTHORS: Stefan Bosse ** $INITIAL: (C) 2006-2017 B-LAB ** $CREATED: 23/06/16 by sbosse. ** $VERSION: 1.1.4 ** ** $INFO: ** ** DIOS: Simplified DOS I/O System Wrapper Layer ** ** ** $ENDOFINFO */ "use strict"; var Io = Require('com/io'); var Comp = Require('com/compat'); var Net = Require('dos/network'); var Sch = Require('dos/scheduler'); var Buf = Require('dos/buf'); var Rpc = Require('dos/rpc'); var Std = Require('dos/std'); var Router = Require('dos/router'); var Fs = Require('fs'); var Dns = Require('dos/dns'); var Afs = Require('dos/afs'); var Cs = Require('dos/capset'); var Status = Net.Status; /** * */ // type dios : function ('rpc:rpcint,'env) : dios // with 'env:{rootdir:capset} var dios = function(rpc,env) { this.rpc = rpc; this.env = env; this.env.workdir = env.rootdir; this.std = Std.StdInt(rpc,env); this.dns = Dns.DnsInt(rpc,env); this.afs = Afs.AfsInt(rpc,env); this.cs = Cs.CsInt(rpc,env); this.stat = Status.STD_OK; }; // with cb:function((name:string,time:number,cap:capability,stat:status) [],status,boolean?) dios.prototype.dir = function (path,cb,nocap) { var self=this; this.dns.dns_lookup(undefined,path,function (stat,cs,remain) { self.stat=stat; if (stat==Status.STD_OK) { self.dns.dns_list(cs,function (stat,dir) { var rows=[],index=0,stat; self.stat=stat; if (stat==Status.STD_OK) { // TODO: lookup all row entries .. rows=Comp.array.map(dir.di_rows,function (row) { return { name:row.de_name, time:row.de_time, cap:undefined, stat:Status.STD_OK } }); if (!nocap) L( function () {return index