[BACK]Return to oxmisc2.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / plugin

Diff for /OpenXM/src/kan96xx/plugin/oxmisc2.c between version 1.12 and 1.17

version 1.12, 2001/05/04 01:06:30 version 1.17, 2002/11/08 14:18:02
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.11 2000/12/06 00:29:52 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc2.c,v 1.16 2002/11/08 02:54:12 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include "ox_kan.h"  #include "ox_kan.h"
 #include "oxmisc2.h"   /* This file requires sm1 object description. */  #include "oxmisc2.h"   /* This file requires sm1 object description. */
Line 301  struct object KoxCreateClient(struct object ip,
Line 301  struct object KoxCreateClient(struct object ip,
   }    }
   rob = newObjectArray(N_OF_CLIENT_FIELDS);    rob = newObjectArray(N_OF_CLIENT_FIELDS);
   oxClientToObject(client,rob);    oxClientToObject(client,rob);
     oxClientListUpdate(rob);
   return(rob);    return(rob);
 }  }
   
Line 381  int oxClientToObject(oxclientp client,struct object ro
Line 382  int oxClientToObject(oxclientp client,struct object ro
   }    }
   putoa(rob,11,KpoInteger(client->engineByteOrder));    putoa(rob,11,KpoInteger(client->engineByteOrder));
   putoa(rob,12,KpoInteger(client->controlByteOrder));    putoa(rob,12,KpoInteger(client->controlByteOrder));
     putoa(rob,13,KpoInteger(client->engineID));
   return(0);    return(0);
 }  }
   
Line 437  int oxObjectToClient(struct object ob,oxclientp cp)
Line 439  int oxObjectToClient(struct object ob,oxclientp cp)
   cp->engineByteOrder = KopInteger(ob1);    cp->engineByteOrder = KopInteger(ob1);
   ob1 = getoa(ob,12);    ob1 = getoa(ob,12);
   cp->controlByteOrder = KopInteger(ob1);    cp->controlByteOrder = KopInteger(ob1);
   
     ob1 = getoa(ob,13);
     cp->engineID = KopInteger(ob1);
   
   
   return(0);    return(0);
Line 674  struct object KoxCloseClient(struct object client) {
Line 679  struct object KoxCloseClient(struct object client) {
     errorOxmisc2("Unknown client->type\n");      errorOxmisc2("Unknown client->type\n");
     break;      break;
   }    }
     oxClientListRemove(client);
   return(KpoInteger(0));    return(KpoInteger(0));
   
 }  }
Line 982  struct object KoxCreateClient2(struct object peer,
Line 988  struct object KoxCreateClient2(struct object peer,
   }    }
   rob = newObjectArray(N_OF_CLIENT_FIELDS);    rob = newObjectArray(N_OF_CLIENT_FIELDS);
   oxClientToObject(client,rob);    oxClientToObject(client,rob);
     oxClientListUpdate(rob);
   return(rob);    return(rob);
 }  }
   
Line 1113  struct object KoxCreateControl_RFC_101(struct object p
Line 1120  struct object KoxCreateControl_RFC_101(struct object p
 oxclientp oxCreateControl_RFC_101(int fdstream,int portStream,  oxclientp oxCreateControl_RFC_101(int fdstream,int portStream,
                                   int ipmask,char *pass)                                    int ipmask,char *pass)
 {  {
   static int clnum = 0;  
   int v = 0;    int v = 0;
   int fdControl = -1;    int fdControl = -1;
   int fdStream = -1;    int fdStream = -1;
Line 1121  oxclientp oxCreateControl_RFC_101(int fdstream,int por
Line 1127  oxclientp oxCreateControl_RFC_101(int fdstream,int por
   
   char *s;    char *s;
   oxclientp client;    oxclientp client;
   extern jmp_buf MyEnv_oxmisc ;  #if defined(__CYGWIN__)
     extern sigjmp_buf MyEnv_oxmisc;
   #else
     extern jmp_buf MyEnv_oxmisc;
   #endif
   int engineByteOrder;    int engineByteOrder;
   extern int Quiet;    extern int Quiet;
   
Line 1170  oxclientp oxCreateControl_RFC_101(int fdstream,int por
Line 1180  oxclientp oxCreateControl_RFC_101(int fdstream,int por
   client->dataport = portStream;    client->dataport = portStream;
   client->controlport = -1;    client->controlport = -1;
   client->controlfd = -1;    client->controlfd = -1;
   client->id = clnum; clnum++;    client->id = oxGetClientID();
   client->type = CLIENT_SOCKET; /* socket */    client->type = CLIENT_SOCKET; /* socket */
   client->engineByteOrder = engineByteOrder;    client->engineByteOrder = engineByteOrder;
   client->controlByteOrder = -1;    client->controlByteOrder = -1;
Line 1222  struct object KoxCreateEngine_RFC_101(struct object pe
Line 1232  struct object KoxCreateEngine_RFC_101(struct object pe
   }    }
   rob = newObjectArray(N_OF_CLIENT_FIELDS);    rob = newObjectArray(N_OF_CLIENT_FIELDS);
   oxClientToObject(client,rob);    oxClientToObject(client,rob);
     oxClientListUpdate(rob);
   return(rob);    return(rob);
 }  }
   
Line 1235  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
Line 1246  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
   
   char *s;    char *s;
   oxclientp client;    oxclientp client;
   extern jmp_buf MyEnv_oxmisc ;  #if defined(__CYGWIN__)
     extern sigjmp_buf MyEnv_oxmisc;
   #else
     extern jmp_buf MyEnv_oxmisc;
   #endif
   int engineByteOrder;    int engineByteOrder;
   extern int Quiet;    extern int Quiet;
   
Line 1285  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
Line 1300  oxclientp oxCreateEngine_RFC_101(int fdstream,int port
   client->dataport = portStream;    client->dataport = portStream;
   client->controlport = -1;    client->controlport = -1;
   client->controlfd = -1;    client->controlfd = -1;
   client->id = engineID;    client->id = oxGetClientID();
     client->engineID = engineID;
   client->type = CLIENT_SOCKET; /* socket */    client->type = CLIENT_SOCKET; /* socket */
   client->engineByteOrder = engineByteOrder;    client->engineByteOrder = engineByteOrder;
   client->controlByteOrder = -1;    client->controlByteOrder = -1;
   return(client);    return(client);
 }  }
   
   void oxClientListUpdate(struct object ob) {
     int id;
     extern struct object OxClientList[];
     id = KopInteger(getoa(ob,8));
     /* printf("id=%d\n",id); */
     if ((id <MAX_N_OF_CLIENT) && (id >= 0)) {
           OxClientList[id] = ob;
     }else{
           errorOxmisc2("oxClientListUpdate(): the client table is full.\n");
     }
   }
   void oxClientListRemove(struct object ob) {
     int id;
     extern struct object OxClientList[];
     id = KopInteger(getoa(ob,8));
     if ((id <MAX_N_OF_CLIENT) && (id >= 0)) {
           (OxClientList[id]).tag = Snull;
     }else{
           /* errorOxmisc2("oxClientListRemove(): the client table is full.\n");*/
     }
   }
   static void KoxCleanClientList() {
     extern int OxClientListn;
     extern struct object OxClientList[];
     int i,j,n;
     struct object ob;
     n = 0;
     for (i=0; i<OxClientListn; i++) {
           if ((OxClientList[i]).tag != Snull) {
             if (!isItClientObject(OxClientList[i])) {
                   (OxClientList[i]).tag = Snull;
             }
           }
     }
   }
   struct object KoxGetClientList() {
     extern int OxClientListn;
     extern struct object OxClientList[];
     int i,j,n;
     struct object rob;
     KoxCleanClientList();
     n = 0;
     for (i=0; i<OxClientListn; i++) {
           if ((OxClientList[i]).tag != Snull) n++;
     }
     rob = newObjectArray(n);
     for (i=0, j=0; i<OxClientListn; i++) {
           if ((OxClientList[i]).tag != Snull) {
             if (j >= n) {
                   j=0;
                   errorOxmisc2("oxGetClientList(): the client table is broken.\n");
             }
             putoa(rob,j,OxClientList[i]);
             j++;
           }
     }
     return rob;
   }
   
   

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.17

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