77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package eval.luv;
 | 
						|
 | 
						|
enum abstract PipeMode(Int) {
 | 
						|
	var READ = 0;
 | 
						|
	var WRITE = 1;
 | 
						|
	var READ_WRITE = 2;
 | 
						|
}
 | 
						|
 | 
						|
enum ReceiveHandle {
 | 
						|
	NONE;
 | 
						|
	TCP(associate:(tcp:Tcp)->Result<Result.NoData>);
 | 
						|
	PIPE(associate:(pipe:Pipe)->Result<Result.NoData>);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
	Pipes
 | 
						|
 | 
						|
	@see https://aantron.github.io/luv/luv/Luv/Pipe
 | 
						|
**/
 | 
						|
@:using(eval.luv.Handle)
 | 
						|
@:using(eval.luv.Stream)
 | 
						|
@:coreType abstract Pipe to Handle to Stream to Stream.TStream<Pipe> to Handle.SocketHandle {
 | 
						|
	/**
 | 
						|
		Allocates and initializes a pipe.
 | 
						|
 | 
						|
		The pipe is not yet connected to anything at this point.
 | 
						|
 | 
						|
		The handle should be cleaned up with `eval.luv.Handle.close` when no longer needed.
 | 
						|
	**/
 | 
						|
	static public function init(loop:Loop, forHandlePassing:Bool = false):Result<Pipe>;
 | 
						|
 | 
						|
	/**
 | 
						|
		Assigns a pipe a name or an address.
 | 
						|
	**/
 | 
						|
	public function bind(nameOrAddress:NativeString):Result<Result.NoData>;
 | 
						|
 | 
						|
	/**
 | 
						|
		Connects to the pipe at the given name or address.
 | 
						|
	**/
 | 
						|
	public function connect(target:NativeString, callback:(result:Result<Result.NoData>)->Void):Void;
 | 
						|
 | 
						|
	/**
 | 
						|
		Retrieves the name or address assigned to the pipe.
 | 
						|
	**/
 | 
						|
	public function getSockName():Result<NativeString>;
 | 
						|
 | 
						|
	/**
 | 
						|
		Retrieves the name or address of the pipe's peer.
 | 
						|
	**/
 | 
						|
	public function getPeerName():Result<NativeString>;
 | 
						|
 | 
						|
	/**
 | 
						|
		Set the number of pending pipe instance handles when the pipe server is
 | 
						|
		waiting for connections.
 | 
						|
	**/
 | 
						|
	public function pendingInstances(amount:Int):Void;
 | 
						|
 | 
						|
	/**
 | 
						|
		Receives a file descriptor over the given pipe.
 | 
						|
 | 
						|
		File descriptors are sent using the `sendHandle` argument of `eval.luv.Stream.write2`.
 | 
						|
		On the receiving end, call `eval.luv.Stream.readStart`. When that function
 | 
						|
		calls its callback, there may be file descriptors in the pipe, in addition
 | 
						|
		to the ordinary data provided to the callback.
 | 
						|
 | 
						|
		To check, call this function `eval.luv.Pipe.recieveHandle` in a loop until
 | 
						|
		it returns `NONE`. Each time it returns `TCP(associate)` or `PIPE(associate)`,
 | 
						|
		create an appropriate handle using either `eval.luv.TCP.init` or `eval.uv.Pipe.init`,
 | 
						|
		and call `associate` to receive the file descriptor and associate it with handle.
 | 
						|
	**/
 | 
						|
	public function receiveHandle():ReceiveHandle;
 | 
						|
 | 
						|
	/**
 | 
						|
		Sets pipe permissions.
 | 
						|
	**/
 | 
						|
	public function chmod(mode:PipeMode):Result<Result.NoData>;
 | 
						|
} |