=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/ox.c,v retrieving revision 1.13 retrieving revision 1.18 diff -u -p -r1.13 -r1.18 --- OpenXM/src/ox_toolkit/ox.c 2000/10/10 05:23:20 1.13 +++ OpenXM/src/ox_toolkit/ox.c 2000/12/05 08:30:25 1.18 @@ -1,5 +1,5 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.12 2000/03/10 12:24:38 ohara Exp $ */ +/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.17 2000/12/03 16:15:03 ohara Exp $ */ /* This module includes functions for sending/receiveng CMO's. @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -20,7 +19,7 @@ #include "ox_toolkit.h" #include "parse.h" -/* CMO_xxx の値の順にならべること(デバッグのため) */ +/* sorting by the value of CMO_xxx. (for debugging) */ static cmo_null* receive_cmo_null(OXFILE *oxfp); static cmo_int32* receive_cmo_int32(OXFILE *oxfp); static cmo_string* receive_cmo_string(OXFILE *oxfp); @@ -47,14 +46,6 @@ static int send_cmo_error2(OXFILE *oxfp, cmo_ static int send_mpz(OXFILE *oxfp, mpz_ptr mpz); static int send_cmo_distributed_polynomial(OXFILE *oxfp, cmo_distributed_polynomial* c); -int ssh_ox_server(char *, char *, char *, short, short); - -OXFILE *current_fd = NULL; -void set_current_fd(OXFILE *oxfp) -{ - current_fd = oxfp; -} - /* hook functions. (yet not implemented) */ static hook_t hook_before_send_cmo = NULL; static hook_t hook_after_send_cmo = NULL; @@ -87,18 +78,6 @@ static cmo *call_hook_after_send_cmo(OXFILE *oxfp, cmo return c; } -int oxf_read(void *buffer, size_t size, size_t num, OXFILE *oxfp) -{ - return read(oxfp->fd, buffer, size*num); -/* return fread(buffer, size, num, oxfp->fp); */ -} - -int oxf_write(void *buffer, size_t size, size_t num, OXFILE *oxfp) -{ - return write(oxfp->fd, buffer, size*num); -/* return fwrite(buffer, size, num, oxfp->fp); */ -} - /* Handling an error. */ static int current_received_serial = 0; @@ -109,19 +88,12 @@ cmo_error2* make_error_object(int err_code, cmo *ob) list_append(li, (cmo *)new_cmo_int32(current_received_serial)); list_append(li, (cmo *)new_cmo_int32(err_code)); list_append(li, ob); - /* 他の情報を加えるならココ */ return new_cmo_error2((cmo *)li); } -#define DEFAULT_SERIAL_NUMBER 0x0000ffff -#define receive_serial_number(x) (receive_int32((x))) - /* getting a next serial number. */ int next_serial(OXFILE *oxfp) { -/* - static int serial_number = DEFAULT_SERIAL_NUMBER; -*/ return oxfp->serial_number++; } @@ -131,55 +103,17 @@ int send_int32(OXFILE *oxfp, int int32) return oxfp->send_int32(oxfp, int32); } -/* sending an object of int32 type with Network Byte Order. - (not equal to cmo_int32 type) */ -int send_int32_nbo(OXFILE *oxfp, int int32) -{ - int32 = htonl(int32); - return oxf_write(&int32, sizeof(int), 1, oxfp); -} - -/* sending an object of int32 type with Local Byte Order. - (not equal to cmo_int32 type) */ -int send_int32_lbo(OXFILE *oxfp, int int32) -{ - return oxf_write(&int32, sizeof(int), 1, oxfp); -} - /* receiving an object of int32 type. (not equal to cmo_int32 type) */ int receive_int32(OXFILE *oxfp) { return oxfp->receive_int32(oxfp); } -/* receiving an object of int32 type with Network Byte Order. - (not equal to cmo_int32 type) */ -int receive_int32_nbo(OXFILE *oxfp) -{ - int tag; - oxf_read(&tag, sizeof(int), 1, oxfp); - return ntohl(tag); -} - -/* receiving an object of int32 type with Local Byte Order. - (not equal to cmo_int32 type) */ -int receive_int32_lbo(OXFILE *oxfp) -{ - int tag; - oxf_read(&tag, sizeof(int), 1, oxfp); - return tag; -} - -/* socket システムコールなどで socket を開いたのち、 - fdopen(sd, "a+") でバッファリングする。("w+" ではない) - バッファリングの後、バイトオーダを決定し、 - oxf_setopt() で関数ポインタを設定し直す。*/ - /* receiving an (OX_tag, serial number) */ int receive_ox_tag(OXFILE *oxfp) { int tag = receive_int32(oxfp); - current_received_serial = receive_serial_number(oxfp); + oxfp->received_serial_number = receive_int32(oxfp); return tag; } @@ -291,10 +225,7 @@ static cmo_error2* receive_cmo_error2(OXFILE *oxfp) return new_cmo_error2(ob); } -/* receive_ox_tag() == OX_DATA の後に呼び出される */ -/* 関数ポインタを使った方がきれいに書けるような気がする. */ -/* if (foo[tag] != NULL) foo[tag](oxfp); とか */ - +/* receive_cmo() is called after receive_ox_tag(). */ cmo* receive_cmo(OXFILE *oxfp) { cmo* m; @@ -447,10 +378,6 @@ int ox_flush(OXFILE *sv) void ox_reset(OXFILE *sv) { send_ox_command(oxf_control(sv), SM_control_reset_connection); - - receive_ox_tag(oxf_control(sv)); /* OX_DATA */ - receive_cmo(oxf_control(sv)); /* (CMO_INT32, 0) */ - while(receive_ox_tag(sv) != OX_SYNC_BALL) { receive_cmo(sv); /* skipping a message. */ }