version 1.16.2.1, 2000/11/08 08:31:55 |
version 1.24, 2001/06/04 02:49:47 |
|
|
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* $OpenXM: OpenXM_contrib2/asir2000/io/tcpf.c,v 1.16 2000/11/07 06:35:39 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/io/tcpf.c,v 1.23 2000/12/16 07:12:01 noro Exp $ |
*/ |
*/ |
#if INET |
|
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
#include "com.h" |
#include "com.h" |
|
|
|
|
#if defined(VISUAL) |
#if defined(VISUAL) |
#include <stdlib.h> |
#include <stdlib.h> |
#include <winsock.h> |
#include <winsock2.h> |
#include <process.h> |
#include <process.h> |
#endif |
#endif |
|
|
|
|
LIST *rp; |
LIST *rp; |
{ |
{ |
int i,c; |
int i,c; |
Q sid; |
Q s_id; |
NODE t,n0,n; |
NODE t,n0,n; |
LIST list,l; |
LIST list,l; |
|
|
|
|
if ( (m_c_tab[i].m>=0) || (m_c_tab[i].c>=0) ) { |
if ( (m_c_tab[i].m>=0) || (m_c_tab[i].c>=0) ) { |
c = m_c_tab[i].c; |
c = m_c_tab[i].c; |
ox_get_serverinfo(c,&list); |
ox_get_serverinfo(c,&list); |
STOQ(i,sid); |
STOQ(i,s_id); |
t = mknode(2,sid,list); |
t = mknode(2,s_id,list); |
MKLIST(l,t); |
MKLIST(l,t); |
NEXTNODE(n0,n); |
NEXTNODE(n0,n); |
BDY(n) = (pointer)l; |
BDY(n) = (pointer)l; |
|
|
} |
} |
|
|
/* |
/* |
try_accept(sock) |
try_accept(sock,port) |
*/ |
*/ |
|
|
void Ptry_accept(arg,rp) |
void Ptry_accept(arg,rp) |
|
|
use_unix = 0; |
use_unix = 0; |
else |
else |
use_unix = 1; |
use_unix = 1; |
s = try_accept(QTOS((Q)ARG0(arg))); |
s = try_accept(use_unix,QTOS((Q)ARG0(arg))); |
STOQ(s,*rp); |
STOQ(s,*rp); |
} |
} |
|
|
|
|
cs = try_connect(use_unix,host,control_port_str); |
cs = try_connect(use_unix,host,control_port_str); |
ss = try_connect(use_unix,host,server_port_str); |
ss = try_connect(use_unix,host,server_port_str); |
} else { |
} else { |
cs = try_accept(cs); |
cs = try_accept(use_unix,cs); |
ss = try_accept(ss); |
ss = try_accept(use_unix,ss); |
} |
} |
} while ( cs < 0 || ss < 0 ); |
} while ( cs < 0 || ss < 0 ); |
|
|
Line 493 char *control_port_str,*server_port_str; |
|
Line 492 char *control_port_str,*server_port_str; |
|
{ |
{ |
char cmd[BUFSIZ]; |
char cmd[BUFSIZ]; |
char localhost[BUFSIZ]; |
char localhost[BUFSIZ]; |
char *dname,*conn_str,*rsh; |
char *dname,*conn_str,*rsh,*dname0; |
char dname_str[BUFSIZ]; |
char dname_str[BUFSIZ]; |
char AsirExe[BUFSIZ]; |
char AsirExe[BUFSIZ]; |
STRING rootdir; |
STRING rootdir; |
char prog[BUFSIZ]; |
char prog[BUFSIZ]; |
char *av[BUFSIZ]; |
char *av[BUFSIZ]; |
|
|
dname = use_x ? (char *)getenv("DISPLAY") : 0; |
dname0 = (char *)getenv("DISPLAY"); |
|
if ( !dname0 ) |
|
dname0 = "0"; |
|
dname = use_x ? dname0 : 0; |
conn_str = conn_to_serv ? "1" : "0"; |
conn_str = conn_to_serv ? "1" : "0"; |
rsh = getenv("ASIR_RSH"); |
rsh = getenv("ASIR_RSH"); |
if ( !rsh ) |
if ( !rsh ) |
Line 542 char *control_port_str,*server_port_str; |
|
Line 544 char *control_port_str,*server_port_str; |
|
control_port_str,server_port_str,server,dname,0); |
control_port_str,server_port_str,server,dname,0); |
else |
else |
execlp(launcher,launcher,".",conn_str, |
execlp(launcher,launcher,".",conn_str, |
control_port_str,server_port_str,server,"0",0); |
control_port_str,server_port_str,server,dname0,"-nolog",0); |
} |
} |
} else if ( conn_to_serv == 2 ) { |
} else if ( conn_to_serv == 2 ) { |
/* special support for java */ |
/* special support for java */ |
Line 572 char *control_port_str,*server_port_str; |
|
Line 574 char *control_port_str,*server_port_str; |
|
control_port_str,server_port_str,server,dname); |
control_port_str,server_port_str,server,dname); |
else |
else |
sprintf(cmd, |
sprintf(cmd, |
"%s -n %s \"%s %s %s %s %s %s %s >&/dev/null&\">/dev/null", |
"%s -n %s \"%s %s %s %s %s %s %s %s>&/dev/null&\">/dev/null", |
rsh,host,launcher,localhost,conn_str, |
rsh,host,launcher,localhost,conn_str, |
control_port_str,server_port_str,server,"0"); |
control_port_str,server_port_str,server,dname0,"-nolog"); |
system(cmd); |
system(cmd); |
} |
} |
#endif /* VISUAL */ |
#endif /* VISUAL */ |
|
|
s = m_c_tab[index].m; |
s = m_c_tab[index].m; |
ox_send_cmd(s,SM_shutdown); |
ox_send_cmd(s,SM_shutdown); |
free_iofp(s); |
free_iofp(s); |
|
#if !defined(VISUAL) |
|
s = m_c_tab[index].c; |
|
free_iofp(s); |
|
#endif |
#if !MPI && !defined(VISUAL) |
#if !MPI && !defined(VISUAL) |
if ( m_c_tab[index].af_unix ) |
if ( m_c_tab[index].af_unix ) |
wait(&status); |
wait(&status); |
|
|
ox_send_cmd(m_c_tab[index].c,ui); |
ox_send_cmd(m_c_tab[index].c,ui); |
*rp = 0; |
*rp = 0; |
} |
} |
#endif |
|
|
|
void shutdown_all() { |
void shutdown_all() { |
int s; |
int s; |
Line 1176 void shutdown_all() { |
|
Line 1181 void shutdown_all() { |
|
continue; |
continue; |
s = m_c_tab[index].m; |
s = m_c_tab[index].m; |
ox_send_cmd(s,SM_shutdown); |
ox_send_cmd(s,SM_shutdown); |
|
#if defined(VISUAL) |
|
Sleep(1000); |
|
#endif |
free_iofp(s); |
free_iofp(s); |
|
#if !defined(VISUAL) |
|
s = m_c_tab[index].c; |
|
free_iofp(s); |
|
#endif |
#if !MPI && !defined(VISUAL) |
#if !MPI && !defined(VISUAL) |
if ( m_c_tab[index].af_unix ) |
if ( m_c_tab[index].af_unix ) |
wait(&status); |
wait(&status); |