[BACK]Return to testclient.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_toolkit

Diff for /OpenXM/src/ox_toolkit/testclient.c between version 1.1 and 1.7

version 1.1, 1999/12/15 05:21:25 version 1.7, 2000/11/27 09:57:10
Line 1 
Line 1 
 /* -*- mode: C -*- */  /* -*- mode: C -*- */
 /* $OpenXM$ */  /* $OpenXM: OpenXM/src/ox_toolkit/testclient.c,v 1.6 2000/11/21 07:59:08 ohara Exp $ */
   
 /* A sample implementation of an OpenXM client with OpenXM C library */  /* A sample implementation of an OpenXM client with OpenXM C library */
   
Line 9 
Line 9 
 #include <string.h>  #include <string.h>
 #include <errno.h>  #include <errno.h>
 #include <fcntl.h>  #include <fcntl.h>
 #include "ox.h"  
   
 ox_file_t sv;  #include "ox_toolkit.h"
   
 int dumpx(int fd, int n)  extern OXFILE *ox_start(char* host, char* prog1, char* prog2);
   OXFILE *sv;
   
   int dumpx(OXFILE *oxfp, int n)
 {  {
     unsigned char buff[2048];      unsigned char buff[2048];
     int i;      int i;
     int len = read(fd, buff, n);      int len = oxf_read(buff, 1, n, oxfp);
   
     fprintf(stderr, "I have read %d byte from socket.\n", len);      fprintf(stderr, "I have read %d byte from socket(%d).\n", len, oxfp->fd);
     for(i = 0; i < len; i++) {      for(i = 0; i < len; i++) {
         fprintf(stderr, "%02x ", buff[i]);          fprintf(stderr, "%02x ", buff[i]);
         if (i%20 == 19) {          if (i%20 == 19) {
Line 30  int dumpx(int fd, int n)
Line 32  int dumpx(int fd, int n)
     return len;      return len;
 }  }
   
   #define SIZE_CMDLINE  8192
   
   static int  size = SIZE_CMDLINE;
   static char cmdline[SIZE_CMDLINE];
   
   static int prompt()
   {
       fprintf(stdout, "> ");
       fgets(cmdline, size, stdin);
       init_parser(cmdline);
   }
   
 #define VERSION 0x11121500  #define VERSION 0x11121500
 #define ID_STRING  "testclient version 0.11121500"  #define ID_STRING  "v0.11121500"
   
 int prompt()  mathcap *oxf_mathcap(OXFILE *oxfp)
 {  {
     printf("> ");      if (oxfp->mathcap == NULL) {
           oxfp->mathcap = new_mathcap();
       }
           return oxfp->mathcap;
 }  }
   
   cmo_mathcap *oxf_cmo_mathcap(OXFILE *oxfp)
   {
           return mathcap_get(oxf_mathcap(oxfp));
   }
   
 int test_0()  int test_0()
 {  {
     cmo* c = NULL;      cmo* c = NULL;
Line 46  int test_0()
Line 68  int test_0()
     c = ox_mathcap(sv);      c = ox_mathcap(sv);
     fprintf(stderr, "testclient:: cmo received.(%p)\n", c);      fprintf(stderr, "testclient:: cmo received.(%p)\n", c);
 #else  #else
     c = ox_mathcap(sv);      c = (cmo *)ox_mathcap(sv);
 #endif  #endif
     print_cmo(c);      print_cmo(c);
     fflush(stderr);      fflush(stderr);
     send_ox_cmo(sv->stream, make_mathcap_object(VERSION, ID_STRING));  
   
       mathcap_init(VERSION, ID_STRING, "testclient", NULL, NULL);
       send_ox_cmo(sv, oxf_cmo_mathcap(sv));
   
     ox_reset(sv);      ox_reset(sv);
     send_ox_cmo(sv->stream, new_cmo_string("N[ArcTan[1]]"));      send_ox_cmo(sv, (cmo *)new_cmo_string("N[ArcTan[1]]"));
     send_ox_command(sv->stream, SM_executeStringByLocalParser);      send_ox_command(sv, SM_executeStringByLocalParser);
     send_ox_command(sv->stream, SM_popCMO);      send_ox_command(sv, SM_popCMO);
     receive_ox_tag(sv->stream);      receive_ox_tag(sv);
     c = receive_cmo(sv->stream);      c = receive_cmo(sv);
     fprintf(stderr, "testclient:: cmo received.\n");      fprintf(stderr, "testclient:: cmo received.\n");
     print_cmo(c);      print_cmo(c);
 }  }
   
 int test_1()  int test_1()
 {  {
     cmo *c = NULL;      cmo *c, *m;
     cmo *m = make_mathcap_object(1000, "test!");  
           mathcap_init(1000, "test!", "testclient", NULL, NULL);
           m = oxf_cmo_mathcap(sv);
     fprintf(stderr, "testclient:: test cmo_mathcap.\n");      fprintf(stderr, "testclient:: test cmo_mathcap.\n");
     send_ox_cmo(sv->stream, m);      send_ox_cmo(sv, m);
     send_ox_command(sv->stream, SM_popCMO);      send_ox_command(sv, SM_popCMO);
     receive_ox_tag(sv->stream);      receive_ox_tag(sv);
     c = receive_cmo(sv->stream);      c = receive_cmo(sv);
     fprintf(stderr, "testclient:: cmo received.(%p)\n", c);      fprintf(stderr, "testclient:: cmo received.(%p)\n", c);
     print_cmo(c);      print_cmo(c);
     fputc('\n', stderr);      fputc('\n', stderr);
 }  }
   
   /*  Example:
     testclient
     >(OX_DATA,(CMO_INT32,123))
     >(OX_COMMAND,(SM_popCMO))
    */
   
 int main(int argc, char* argv[])  int main(int argc, char* argv[])
 {  {
     ox* m = NULL;      ox* m = NULL;
Line 89  int main(int argc, char* argv[])
Line 121  int main(int argc, char* argv[])
         server = argv[1];          server = argv[1];
     }      }
     fprintf(stderr, "testclient:: I use %s as an OX server.\n", server);      fprintf(stderr, "testclient:: I use %s as an OX server.\n", server);
     sv = ox_start("localhost", "ox", server);  /*    sv = ox_start("localhost", "ox", server);  */
     if (sv == NULL) {      if (sv == NULL) {
         fprintf(stderr, "testclient:: I cannot connect to servers.\n");          fprintf(stderr, "testclient:: I cannot connect to servers.\n");
         exit(1);          exit(1);
Line 99  int main(int argc, char* argv[])
Line 131  int main(int argc, char* argv[])
         test_1();          test_1();
     }      }
   
       setflag_parse(PFLAG_ADDREV);
   
     while(prompt(), (m = parse()) != NULL) {      while(prompt(), (m = parse()) != NULL) {
         send_ox(sv->stream, m);          send_ox(sv, m);
         if (m->tag == OX_COMMAND) {          if (m->tag == OX_COMMAND) {
             code = ((ox_command *)m)->command;              code = ((ox_command *)m)->command;
             if (code >= 1024) {              if (code >= 1024) {
                 break;                  break;
             }else if (code == SM_popCMO || code == SM_popString) {              }else if (code == SM_popCMO || code == SM_popString) {
                 receive_ox_tag(sv->stream);                  receive_ox_tag(sv);
                 c = receive_cmo(sv->stream);                  c = receive_cmo(sv);
                 fprintf(stderr, "testclient:: cmo received.\n");                  fprintf(stderr, "testclient:: cmo received.\n");
                 print_cmo(c);                  print_cmo(c);
             }              }

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

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