1 jls.loader.provide('jls.io.Pipe'); 2 3 jls.loader.requireLibrary('jls_io'); 4 5 jls.loader.require('jls.io.FileDescriptor'); 6 7 jls.io.Pipe = jls.lang.Class.create( /** @lends jls.io.Pipe.prototype */ 8 { 9 /** 10 * Creates a pipe. 11 * 12 * @constructs 13 * @class This class represents a pipe. 14 */ 15 initialize : function() { 16 var pipe = _native.io.createPipe(); 17 this._sink = new jls.io.FileDescriptor(pipe[0]); 18 this._source = new jls.io.FileDescriptor(pipe[1]); 19 }, 20 /** 21 * Returns the sink file descriptor. 22 * 23 * @returns {jls.io.FileDescriptor} The sink. 24 */ 25 sink : function() { 26 return this._sink; 27 }, 28 /** 29 * Returns the source file descriptor. 30 * 31 * @returns {jls.io.FileDescriptor} The source. 32 */ 33 source : function() { 34 return this._source; 35 }, 36 /** 37 * Closes the pipe. 38 * 39 */ 40 close : function() { 41 this._sink.close(); 42 this._source.close(); 43 } 44 }); 45 46 47 Object.extend(jls.io.Pipe, /** @lends jls.io.Pipe */ 48 { 49 /** 50 * Opens a pipe. 51 * 52 * @returns {jls.io.Pipe} The new pipe. 53 */ 54 open : function() { 55 return new jls.io.Pipe(); 56 } 57 }); 58 59