version 1.14, 2000/10/11 06:56:02 |
version 1.16, 2000/11/28 22:11:13 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- mode: C; coding: euc-japan -*- */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.13 2000/10/10 05:23:20 ohara Exp $ */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.15 2000/10/12 15:53:25 ohara Exp $ */ |
|
|
/* |
/* |
This module includes functions for sending/receiveng CMO's. |
This module includes functions for sending/receiveng CMO's. |
Line 46 static int send_cmo_error2(OXFILE *oxfp, cmo_ |
|
Line 46 static int send_cmo_error2(OXFILE *oxfp, cmo_ |
|
static int send_mpz(OXFILE *oxfp, mpz_ptr mpz); |
static int send_mpz(OXFILE *oxfp, mpz_ptr mpz); |
static int send_cmo_distributed_polynomial(OXFILE *oxfp, cmo_distributed_polynomial* c); |
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) */ |
/* hook functions. (yet not implemented) */ |
static hook_t hook_before_send_cmo = NULL; |
static hook_t hook_before_send_cmo = NULL; |
static hook_t hook_after_send_cmo = NULL; |
static hook_t hook_after_send_cmo = NULL; |
Line 100 cmo_error2* make_error_object(int err_code, cmo *ob) |
|
Line 92 cmo_error2* make_error_object(int err_code, cmo *ob) |
|
return new_cmo_error2((cmo *)li); |
return new_cmo_error2((cmo *)li); |
} |
} |
|
|
#define DEFAULT_SERIAL_NUMBER 0x0000ffff |
|
#define receive_serial_number(x) (receive_int32((x))) |
|
|
|
/* getting a next serial number. */ |
/* getting a next serial number. */ |
int next_serial(OXFILE *oxfp) |
int next_serial(OXFILE *oxfp) |
{ |
{ |
/* |
|
static int serial_number = DEFAULT_SERIAL_NUMBER; |
|
*/ |
|
return oxfp->serial_number++; |
return oxfp->serial_number++; |
} |
} |
|
|
Line 118 int send_int32(OXFILE *oxfp, int int32) |
|
Line 104 int send_int32(OXFILE *oxfp, int int32) |
|
return oxfp->send_int32(oxfp, 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) */ |
/* receiving an object of int32 type. (not equal to cmo_int32 type) */ |
int receive_int32(OXFILE *oxfp) |
int receive_int32(OXFILE *oxfp) |
{ |
{ |
return oxfp->receive_int32(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) */ |
/* receiving an (OX_tag, serial number) */ |
int receive_ox_tag(OXFILE *oxfp) |
int receive_ox_tag(OXFILE *oxfp) |
{ |
{ |
int tag = receive_int32(oxfp); |
int tag = receive_int32(oxfp); |
current_received_serial = receive_serial_number(oxfp); |
oxfp->received_serial_number = receive_int32(oxfp); |
return tag; |
return tag; |
} |
} |
|
|