@@ -67,32 +67,41 @@ export class DeviceFileSystem extends BaseFileSystem implements FileSystem {
6767 }
6868}
6969
70- export function configureFileSystem ( devices : { [ name : string ] : Device } , cb : BFSCallback < FS > ) : void {
71- DeviceFileSystem . Create ( { devices : devices } , ( e , dfs ) => {
72- if ( e ) {
73- cb ( e ) ;
74- return ;
75- }
70+ export async function configureFileSystem ( devices : { [ name : string ] : Device } ) : Promise < FS > {
71+ const dfs = await new Promise < DeviceFileSystem > ( ( resolve , reject ) => {
72+ DeviceFileSystem . Create ( { devices : devices } , ( e , dfs ) => e ? reject ( e ) : resolve ( dfs ) )
73+ } ) ;
74+ const mfs = await new Promise < MountableFileSystem > ( ( resolve , reject ) => {
7675 MountableFileSystem . Create ( {
7776 "/dev" : dfs
78- } , ( e , mfs ) => {
79- if ( e ) {
80- cb ( e ) ;
81- return
82- }
83-
84- const fs = new FS ( ) ;
85- fs . initialize ( mfs ) ;
86-
87- const fdMap : { [ id : number ] : File } = ( fs as any ) . fdMap ;
88- fdMap [ 0 ] = handles . stdin ;
89- fdMap [ 1 ] = handles . stdout ;
90- fdMap [ 2 ] = handles . stderr ;
91-
92- cb ( undefined , fs ) ;
93- } ) ;
77+ } , ( e , mfs ) => e ? reject ( e ) : resolve ( mfs ) ) ;
78+ } ) ;
79+
80+ const fs = new FS ( ) ;
81+ fs . initialize ( mfs ) ;
82+
83+ const fdMap : { [ id : number ] : File } = ( fs as any ) . fdMap ;
84+ fdMap [ 0 ] = handles . stdin ;
85+ fdMap [ 1 ] = handles . stdout ;
86+ fdMap [ 2 ] = handles . stderr ;
87+
88+ return fs ;
89+ }
90+
91+ export async function asyncRead ( fs : FS , fd : number , buffer : Buffer , offset : number , length : number , position : number | null )
92+ : Promise < { byteLength : number , buffer : Buffer } > {
93+ return new Promise < { byteLength : number , buffer : Buffer } > ( ( resolve , reject ) => {
94+ fs . read ( fd , buffer , offset , length , position ,
95+ ( err , n , buf ) => err ? reject ( err ) : resolve ( { byteLength : n , buffer : buf } ) ) ;
96+ } ) ;
97+ }
98+
99+ export async function asyncWrite ( fs : FS , fd : number , buffer : Buffer , offset : number , length : number , position : number | null )
100+ : Promise < void > {
101+ return new Promise < void > ( ( resolve , reject ) => {
102+ fs . write ( fd , buffer , offset , length , position , e => e ? reject ( e ) : resolve ( ) )
94103 } ) ;
95104}
96105
97106// Re-export for device implementors
98- export { BFSCallback , Stats , File , FileFlag } ;
107+ export { BFSCallback , Stats , File , FileFlag , FS } ;
0 commit comments