[BACK]Return to launch CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / lib

File: [local] / OpenXM_contrib2 / asir2000 / lib / launch (download)

Revision 1.1.1.1 (vendor branch), Fri Dec 3 07:39:11 1999 UTC (24 years, 5 months ago) by noro
Branch: NORO
CVS Tags: RELEASE_20000124, RELEASE_1_1_2, ASIR2000
Changes since 1.1: +0 -0 lines

Imported asir2000 as OpenXM_contrib2/asir2000.

/* $OpenXM: OpenXM_contrib2/asir2000/lib/launch,v 1.1.1.1 1999/12/03 07:39:11 noro Exp $ */
/* 
	usage of 

	generate_port()
	try_bind_listen()
	try_connect()
	try_accept()
	register_server()
*/

def local_launch(Server,Use_X,Conn_To_Server,Use_Unix)
{
	Host = Use_Unix ? "." : "127.1";
	Display = getenv("DISPLAY");
	if ( !Display )
		Display = "0";
	do {
		Control_Sock = -1;
		Server_Sock = -1;
		do {
			Control_Port = generate_port(Use_Unix);
			Server_Port = generate_port(Use_Unix);
			if ( !Conn_To_Server ) {
				if ( Control_Sock < 0 )
					Control_Sock = try_bind_listen(Control_Port);
				if ( Server_Sock < 0 )
					Server_Sock = try_bind_listen(Server_Port);
			} else
				break;
		} while ( Control_Sock < 0 || Server_Sock < 0 );
		ServerCmd = get_rootdir()+"/ox_launch"
			+" "+Host
			+" "+rtostr(Conn_To_Server) +" "+rtostr(Control_Port)
			+" "+rtostr(Server_Port) +" "+Server +" "+Display;
		if ( Use_X && getenv("DISPLAY") )
			Cmd = "xterm -name ox_xterm -display "+Display
				+" -geometry 60x10 -e "
				+ ServerCmd+"\&";
		else
			Cmd =ServerCmd+"\&";
		shell(Cmd);
		if ( Conn_To_Server ) {
			Control_Sock = try_connect(Host,Control_Port);
			Server_Sock = try_connect(Host,Server_Port);
		} else {
			Control_Sock = try_accept(Control_Sock,Control_Port);
			Server_Sock = try_accept(Server_Sock,Control_Port);
		}
	} while ( Control_Sock < 0 || Server_Sock < 0 );
	return register_server(Control_Sock,Control_Port,Server_Sock,Server_Port);
}

def remote_launch(Host,Server,Use_X,Conn_To_Server)
{
	Display = getenv("DISPLAY");
	if ( !Display )
		Display = "0";
	do {
		Control_Sock = -1;
		Server_Sock = -1;
		do {
			Control_Port = generate_port();
			Server_Port = generate_port();
			if ( !Conn_To_Server ) {
				if ( Control_Sock < 0 )
					Control_Sock = try_bind_listen(Control_Port);
				if ( Server_Sock < 0 )
					Server_Sock = try_bind_listen(Server_Port);
			} else
				break;
		} while ( Control_Sock < 0 || Server_Sock < 0 );
		ServerCmd = get_rootdir()+"/ox_launch"
			+" "+Host
			+" "+rtostr(Conn_To_Server) +" "+rtostr(Control_Port)
			+" "+rtostr(Server_Port) +" "+Server +" "+Display;
		if ( Use_X && getenv("DISPLAY") )
			Cmd = "xterm -name ox_xterm -display "+Display
				+" -geometry 60x10 -e "
				+ ServerCmd+">&/dev/null&";
		else
			Cmd =ServerCmd+">&/dev/null&";
		shell("rsh -n "+Host+" \""+Cmd+"\""+">/dev/null");
		if ( Conn_To_Server ) {
			Control_Sock = try_connect(Host,Control_Port);
			Server_Sock = try_connect(Host,Server_Port);
		} else {
			Control_Sock = try_accept(Control_Sock,Control_Port);
			Server_Sock = try_accept(Server_Sock,Control_Port);
		}
	} while ( Control_Sock < 0 || Server_Sock < 0 );
	return register_server(Control_Sock,Control_Port,Server_Sock,Server_Port);
}
end$