aboutsummaryrefslogtreecommitdiff
path: root/src/include/sockio.h
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-03-08 19:09:18 +0000
committerdos-reis <gdr@axiomatics.org>2008-03-08 19:09:18 +0000
commit6a0809d42bbfb8ae3c00431c69bff92f38e5739c (patch)
treea1652c71b6a3ccab8773f8c02d493b3278632fc8 /src/include/sockio.h
parent8531f4c74274b8aa99168d220738227557a9c418 (diff)
downloadopen-axiom-6a0809d42bbfb8ae3c00431c69bff92f38e5739c.tar.gz
* include/sockio.h: Rename from sockio-c.H1.
* clef/edible.c: Don't include useproto.h. Include sockio.h * graph/view3D/surface3d.c.pamphlet: Likewise. * graph/viewman/fun2D.c.pamphlet: Likewise. * graph/viewman/fun3D.c.pamphlet: Likewise. * graph/viewman/make2D.c.pamphlet: Likewise. * graph/viewman/make3D.c.pamphlet: Likewise. * graph/viewman/makeGraph.c.pamphlet: Likewise. * graph/viewman/sselect.c.pamphlet: Likewise. * graph/viewman/viewman.c.pamphlet: Likewise. * graph/viewman/viewman.h: Likewise. * hyper/ReadBitmap.c: Likewise. * hyper/addfile.c: Likewise. * hyper/cond.c: Likewise. * hyper/debug.c: Likewise. * hyper/dialog.c: Likewise. * hyper/display.c: Likewise. * hyper/event.c: Likewise. * hyper/ex2ht.c: Likewise. * hyper/extent1.c: Likewise. * hyper/extent2.c: Likewise. * hyper/form-ext.c: Likewise. * hyper/group.c: Likewise. * hyper/halloc.c: Likewise. * hyper/hash.c: Likewise. * hyper/htadd.c: Likewise. * hyper/hterror.c: Likewise. * hyper/htinp.c: Likewise. * hyper/hyper.c: Likewise. * hyper/initx.c: Likewise. * hyper/input.c: Likewise. * hyper/item.c: Likewise. * hyper/keyin.c: Likewise. * hyper/lex.c: Likewise. * hyper/macro.c: Likewise. * hyper/mem.c: Likewise. * hyper/parse-aux.c: Likewise. * hyper/parse-input.c: Likewise. * hyper/parse-paste.c: Likewise. * hyper/parse-types.c: Likewise. * hyper/parse.c: Likewise. * hyper/scrollbar.c: Likewise. * hyper/show-types.c: Likewise. * hyper/spadbuf.c: Likewise. * hyper/spadint.c: Likewise. * hyper/titlebar.c: Likewise. * lib/sockio-c.c: Likewise. * sman/session.c: Likewise. * sman/sman.c: Likewise. * include/useproto.h: Remove.
Diffstat (limited to 'src/include/sockio.h')
-rw-r--r--src/include/sockio.h189
1 files changed, 189 insertions, 0 deletions
diff --git a/src/include/sockio.h b/src/include/sockio.h
new file mode 100644
index 00000000..5b4f7d9f
--- /dev/null
+++ b/src/include/sockio.h
@@ -0,0 +1,189 @@
+/*
+ Copyright (C) 1991-2002, The Numerical Algorithms Group Ltd.
+ All rights reserved.
+ Copyright (C) 2007-2008, Gabriel Dos Reis
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ - Neither the name of The Numerical ALgorithms Group Ltd. nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef OPENAXIOM_SOCKIO_included
+#define OPENAXIOM_SOCKIO_included
+
+
+#ifdef __MINGW32__
+# include <winsock2.h>
+#else
+# include <sys/types.h>
+# include <sys/socket.h>
+# include <netinet/in.h>
+#endif
+
+#include "axiom-c-macros.h"
+
+/* On Windows, a socket identifier is not a file descriptor. It is
+ represented by an integer type, but that integer type is not just
+ plain int as in the Unix world. It is an unsigned integer.
+ Consequently, we abstract over that variation, using the typedef
+ axiom_socket. */
+
+#ifdef __MINGW32__
+typedef SOCKET axiom_socket;
+#else
+typedef int axiom_socket;
+#endif
+
+
+/* Close a socket communication endpoint. */
+extern void axiom_close_socket(axiom_socket);
+
+typedef struct {
+ axiom_socket socket; /* socket number returned by "socket" call */
+ int type; /* socket type (AF_UNIX or AF_INET) */
+ int purpose; /* can be SessionManager, GraphicsServer, etc. */
+ int pid; /* process ID of connected socket */
+ int frame; /* spad interpreter frame (for interpreter windows) */
+ axiom_socket remote; /* file descriptor of remote socket */
+ union {
+ struct sockaddr u_addr;
+ struct sockaddr_in i_addr;
+ } addr;
+ char *host_name; /* name of foreign host if type == AF_INET */
+} Sock;
+
+
+extern int get_int(Sock*);
+extern char* get_string(Sock*);
+extern double get_float(Sock*);
+extern Sock* connect_to_local_server(char*, int, int);
+extern int sread(Sock*, char*, int, char*);
+extern double plus_infinity(void);
+extern double minus_infinity(void);
+extern double NANQ(void);
+extern void sigpipe_handler(int);
+extern int wait_for_client_read(Sock*, char*, int, char*);
+extern int wait_for_client_write(Sock*, char*, int, char*);
+extern int swrite(Sock*, char*, int, char*);
+extern int sselect(int, fd_set*, fd_set*, fd_set*, void*);
+extern int fill_buf(Sock*, char*, int, char*);
+extern int sock_get_int(int);
+extern int get_ints(Sock*, int*, int);
+extern int sock_get_ints(int, int*, int);
+extern int send_int(Sock*, int);
+extern int sock_send_int(int, int);
+extern int send_ints(Sock*, int*, int);
+extern int sock_send_ints(int, int*, int);
+extern int send_string(Sock*, char*);
+extern int send_string_len(Sock*, char*, int);
+extern int sock_send_string(int, char*);
+extern int sock_send_string_len(int, char*, int);
+extern int send_strings(Sock*, char**, int);
+extern int sock_send_strings(int, char**, int);
+extern char* sock_get_string(int);
+extern char* get_string_buf(Sock*, char*, int);
+extern char* sock_get_string_buf(int, char*, int);
+extern int get_strings(Sock*, char**, int);
+extern int sock_get_strings(int, char**, int);
+extern int send_float(Sock*, double);
+extern int sock_send_float(int, double);
+extern int send_sfloats(Sock*, float*, int);
+extern int sock_send_sfloats(int, float*, int);
+extern int send_floats(Sock*, double*, int);
+extern int sock_send_floats(int, double*, int);
+extern double sock_get_float(int);
+extern int get_sfloats(Sock*, float*, int);
+extern int sock_get_sfloats(int, float*, int);
+extern int get_floats(Sock*, double*, int);
+extern int sock_get_floats(int, double*, int);
+extern int wait_for_client_kill(Sock*, int);
+extern int sock_get_remote_fd(int);
+extern int send_signal(Sock*, int);
+extern int sock_send_signal(int, int);
+extern int send_wakeup(Sock*);
+extern int sock_send_wakeup(int);
+extern Sock* connect_to_local_server_new(char*, int, int);
+extern void remote_stdio(Sock*);
+extern void init_purpose_table(void);
+extern int make_server_number(void);
+extern void close_socket(axiom_socket, char*);
+extern int make_server_name(char*, char*);
+extern int open_server(char*);
+extern int accept_connection(Sock*);
+extern void get_socket_type(Sock*);
+extern int sock_accept_connection(int);
+extern void redirect_stdio(Sock*);
+extern void init_socks(void);
+extern int server_switch(void);
+extern void flush_stdout(void);
+extern void print_line(char*);
+
+
+#define MaxClients 150
+
+/* possible socket types (purpose) */
+
+#define SessionManager 1
+#define ViewportServer 2
+#define MenuServer 3
+#define SessionIO 4
+#define BaloonServer 5
+#define InterpWindow 6
+#define KillSpad 7
+#define DebugWindow 8 /* used for nagman */
+#define Forker 9
+#define AV 10 /*Simon's algebraic viewer */
+
+#define Acknowledge 255
+
+/* Timeout value for connection to remote socket */
+
+#define Forever 0
+
+/* Socket name for local AXIOM server and session manager */
+
+#define SpadServer "/tmp/.d"
+#define SessionServer "/tmp/.s"
+#define SessionIOName "/tmp/.i"
+#define MenuServerName "/tmp/.h"
+#define ForkServerName "/tmp/.f"
+
+
+#define MASK_SIZE (NBBY*sizeof(fd_set))
+
+
+/* table of dedicated socket types */
+
+extern Sock *purpose_table[];
+extern Sock server[];
+extern Sock clients[];
+extern fd_set socket_mask;
+extern fd_set server_mask;
+
+
+#endif /* OPENAXIOM_SOCKIO_included */