[BACK]Return to tcpf.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / io

Diff for /OpenXM_contrib2/asir2000/io/tcpf.c between version 1.7 and 1.8

version 1.7, 2000/03/19 12:35:20 version 1.8, 2000/07/13 05:09:03
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/io/tcpf.c,v 1.6 2000/01/26 02:05:34 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/io/tcpf.c,v 1.7 2000/03/19 12:35:20 noro Exp $ */
 #if INET  #if INET
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 31  static int m_c_i,m_c_s;
Line 31  static int m_c_i,m_c_s;
 #if MPI  #if MPI
 extern int mpi_nprocs;  extern int mpi_nprocs;
 #define valid_mctab_index(ind)\  #define valid_mctab_index(ind)\
 if((ind)<0||(ind)>=(mpi_nprocs-1)){error("invalid server id");}  if((ind)<0||(ind)>=mpi_nprocs){error("invalid server id");}
 #else  #else
 #define valid_mctab_index(ind)\  #define valid_mctab_index(ind)\
 if((ind)<0||(ind)>=m_c_i||\  if((ind)<0||(ind)>=m_c_i||\
 (!m_c_tab[ind].m&&!m_c_tab[ind].c)){error("invalid server id");}  ((m_c_tab[ind].m<0)&&(m_c_tab[ind].c<0))){error("invalid server id");}
 #endif  #endif
   
 int register_server();  int register_server();
 int get_mcindex(int);  int get_mcindex(int);
   
   void Pox_send_raw_cmo(), Pox_recv_raw_cmo();
   
 void Pox_launch(),Pox_launch_nox(),Pox_launch_main();  void Pox_launch(),Pox_launch_nox(),Pox_launch_main();
 void Pox_launch_generic();  void Pox_launch_generic();
 void Pox_shutdown();  void Pox_shutdown();
Line 60  void Pox_flush();
Line 62  void Pox_flush();
 void Pgenerate_port(),Ptry_bind_listen(),Ptry_connect(),Ptry_accept();  void Pgenerate_port(),Ptry_bind_listen(),Ptry_connect(),Ptry_accept();
 void Pregister_server();  void Pregister_server();
 void Pox_get_serverinfo();  void Pox_get_serverinfo();
   void Pox_mpi_myid(), Pox_mpi_nprocs();
   
 void ox_launch_generic();  void ox_launch_generic();
   
 pointer bevalf();  pointer bevalf();
   
 struct ftab tcp_tab[] = {  struct ftab tcp_tab[] = {
           {"ox_send_raw_cmo",Pox_send_raw_cmo,2},
           {"ox_recv_raw_cmo",Pox_recv_raw_cmo,1},
         {"ox_get_serverinfo",Pox_get_serverinfo,-1},          {"ox_get_serverinfo",Pox_get_serverinfo,-1},
         {"generate_port",Pgenerate_port,-1},          {"generate_port",Pgenerate_port,-1},
         {"try_bind_listen",Ptry_bind_listen,1},          {"try_bind_listen",Ptry_bind_listen,1},
Line 82  struct ftab tcp_tab[] = {
Line 87  struct ftab tcp_tab[] = {
         {"ox_cmo_rpc",Pox_cmo_rpc,-99999999},          {"ox_cmo_rpc",Pox_cmo_rpc,-99999999},
   
         {"ox_sync",Pox_sync,1},          {"ox_sync",Pox_sync,1},
   #if MPI
           {"ox_mpi_myid",Pox_mpi_myid,0},
           {"ox_mpi_nprocs",Pox_mpi_nprocs,0},
   #endif
 #if !MPI  #if !MPI
         {"ox_reset",Pox_reset,-2},          {"ox_reset",Pox_reset,-2},
         {"ox_intr",Pox_intr,1},          {"ox_intr",Pox_intr,1},
Line 118  extern int ox_exchange_mathcap;
Line 127  extern int ox_exchange_mathcap;
   
 char *getenv();  char *getenv();
   
   #if MPI
   extern int mpi_myid, mpi_nprocs;
   
   void Pox_mpi_myid(rp)
   Q *rp;
   {
           STOQ(mpi_myid,*rp);
   }
   
   void Pox_mpi_nprocs(rp)
   Q *rp;
   {
           STOQ(mpi_nprocs,*rp);
   }
   #endif
   
 void Pox_get_serverinfo(arg,rp)  void Pox_get_serverinfo(arg,rp)
 NODE arg;  NODE arg;
 LIST *rp;  LIST *rp;
Line 129  LIST *rp;
Line 154  LIST *rp;
   
         if ( !arg ) {          if ( !arg ) {
                 for ( i = 0, n0 = 0; i < m_c_i; i++ )                  for ( i = 0, n0 = 0; i < m_c_i; i++ )
                         if ( m_c_tab[i].m || m_c_tab[i].c ) {                          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,sid);
Line 143  LIST *rp;
Line 168  LIST *rp;
                 MKLIST(*rp,n0);                  MKLIST(*rp,n0);
         } else {          } else {
                 i = QTOS((Q)ARG0(arg));                  i = QTOS((Q)ARG0(arg));
                 if ( i >= 0 && i < m_c_i && (m_c_tab[i].m || m_c_tab[i].c) )                  if ( i >= 0 && i < m_c_i && ((m_c_tab[i].m>=0) || (m_c_tab[i].c>=0)) )
                         ox_get_serverinfo(m_c_tab[i].c,rp);                          ox_get_serverinfo(m_c_tab[i].c,rp);
                 else {                  else {
                         MKLIST(*rp,0);                          MKLIST(*rp,0);
Line 528  int af_unix,m,c;
Line 553  int af_unix,m,c;
                 return -1;                  return -1;
         if ( !m_c_tab ) {          if ( !m_c_tab ) {
                 s = BUFSIZ*sizeof(struct m_c);                  s = BUFSIZ*sizeof(struct m_c);
                 m_c_tab = (struct m_c *)MALLOC_ATOMIC(s); bzero(m_c_tab,s);                  m_c_tab = (struct m_c *)MALLOC_ATOMIC(s);
                   for ( i = 0; i < BUFSIZ; i++ ) {
                           m_c_tab[i].af_unix = 0;
                           m_c_tab[i].m = m_c_tab[i].c = -1;
                   }
                 m_c_s = BUFSIZ;                  m_c_s = BUFSIZ;
         }          }
 #if !MPI  #if !MPI
         for ( i = 0; i < m_c_i; i++ )          for ( i = 0; i < m_c_i; i++ )
                 if ( !m_c_tab[i].m && !m_c_tab[i].c )                  if ( (m_c_tab[i].m<0) && (m_c_tab[i].c<0) )
                         break;                          break;
         if ( i < m_c_i ) {          if ( i < m_c_i ) {
                 m_c_tab[i].m = m; m_c_tab[i].c = c;                  m_c_tab[i].m = m; m_c_tab[i].c = c;
Line 545  int af_unix,m,c;
Line 574  int af_unix,m,c;
                 s = (m_c_s+BUFSIZ)*sizeof(struct m_c);                  s = (m_c_s+BUFSIZ)*sizeof(struct m_c);
                 t = (struct m_c *)MALLOC_ATOMIC(s); bzero(m_c_tab,s);                  t = (struct m_c *)MALLOC_ATOMIC(s); bzero(m_c_tab,s);
                 bcopy(m_c_tab,t,m_c_s*sizeof(struct m_c));                  bcopy(m_c_tab,t,m_c_s*sizeof(struct m_c));
                   for ( i = 0; i < BUFSIZ; i++ ) {
                           m_c_tab[m_c_s+i].af_unix = 0;
                           m_c_tab[m_c_s+i].m = m_c_tab[m_c_s+i].c = -1;
                   }
                 m_c_s += BUFSIZ; m_c_tab = t;                  m_c_s += BUFSIZ; m_c_tab = t;
         }          }
         m_c_tab[m_c_i].m = m; m_c_tab[m_c_i].c = c;          m_c_tab[m_c_i].m = m; m_c_tab[m_c_i].c = c;
Line 617  Q *rp;
Line 650  Q *rp;
         *rp = ONE;          *rp = ONE;
 }  }
   
   void Pox_send_raw_cmo(arg,rp)
   NODE arg;
   Obj *rp;
   {
           int s;
           int index = QTOS((Q)ARG0(arg));
   
           valid_mctab_index(index);
           s = m_c_tab[index].c;
           ox_write_cmo(s,(Obj)ARG1(arg));
           /* flush always */
           ox_flush_stream(s);
           *rp = 0;
   }
   
   void Pox_recv_raw_cmo(arg,rp)
   NODE arg;
   Obj *rp;
   {
           int s;
           int index = QTOS((Q)ARG0(arg));
   
           valid_mctab_index(index);
           s = m_c_tab[index].c;
           ox_read_cmo(s,rp);
   }
   
 void Pox_push_local(arg,rp)  void Pox_push_local(arg,rp)
 NODE arg;  NODE arg;
 Obj *rp;  Obj *rp;
Line 977  Q *rp;
Line 1037  Q *rp;
         if ( m_c_tab[index].af_unix )          if ( m_c_tab[index].af_unix )
                 wait(&status);                  wait(&status);
 #endif  #endif
         m_c_tab[index].m = 0; m_c_tab[index].c = 0;          m_c_tab[index].m = -1; m_c_tab[index].c = -1;
         m_c_tab[index].af_unix = 0;          m_c_tab[index].af_unix = 0;
         *rp = 0;          *rp = 0;
 }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>