File: [local] / OpenXM / src / ox_toolkit / sample2.c (download)
Revision 1.2, Fri Mar 10 12:24:40 2000 UTC (24 years, 6 months ago) by ohara
Branch: MAIN
CVS Tags: RELEASE_1_1_3, RELEASE_1_1_2 Changes since 1.1: +2 -3
lines
ox.h and ox_tag.h have been renamed
|
/* -*- mode: C -*- */
/* $OpenXM: OpenXM/src/ox_toolkit/sample2.c,v 1.2 2000/03/10 12:24:40 ohara Exp $ */
/*
This program explains how to get
int, char *, and so on from the received data
by using low-level functions of OpenXM C library.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "ox_toolkit.h"
int explain_cmo(cmo *);
int explain_cmo_list(cmo_list *c)
{
int len=length_cmo_list(c);
int i=0;
printf("{");
for(i=0; i<len; i++) {
explain_cmo(nth_cmo_list(c, i));
printf(", ");
}
printf("}");
}
int explain_cmo_int32(cmo_int32 *c)
{
printf("%d", c->i);
}
int explain_cmo_string(cmo_string *c)
{
printf("%s", c->s);
}
int explain_cmo_zz(cmo_zz *c)
{
printf("%s", new_string_set_cmo((cmo *)c));
}
int explain_cmo(cmo *c)
{
switch(c->tag) {
case CMO_LIST:
explain_cmo_list((cmo_list *)c);
break;
case CMO_INT32:
explain_cmo_int32((cmo_int32 *)c);
break;
case CMO_STRING:
explain_cmo_string((cmo_string *)c);
break;
case CMO_ZZ:
explain_cmo_zz((cmo_zz *)c);
break;
default:
printf("cmo");
}
}
int main()
{
ox_file_t s;
cmo_list *c;
cmo *d;
int len;
int i;
/* starting an OpenXM server */
s = ox_start("localhost", "ox", "ox_sm1");
/* making a list. */
c = new_cmo_list();
append_cmo_list(c, (cmo *)new_cmo_int32(10000));
append_cmo_list(c, (cmo *)new_cmo_string("Hello"));
append_cmo_list(c, (cmo *)new_cmo_zz_set_string("3141592653289793238462643383279"));
/* The following equals to ox_push_cmo(s, (cmo *)c) */
send_ox_tag(s->stream, OX_DATA);
send_cmo(s->stream, (cmo *)c);
/* The following equals to ox_push_cmd(s, SM_popCMO) */
send_ox_tag(s->stream, OX_COMMAND);
send_int32(s->stream, SM_popCMO);
/* The following equals to ox_get(s) */
receive_ox_tag(s->stream);
d = receive_cmo(s->stream);
explain_cmo(d);
printf("\n");
ox_close(s);
return 0;
}