This commit was manufactured by cvs2svn to create tag 'buildscript'.
[IRC.git] / Robust / src / Runtime / socket.c
diff --git a/Robust/src/Runtime/socket.c b/Robust/src/Runtime/socket.c
deleted file mode 100644 (file)
index bb84411..0000000
+++ /dev/null
@@ -1,430 +0,0 @@
-#include "runtime.h"
-#include "structdefs.h"
-#include <fcntl.h>
-#ifndef RAW
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <strings.h>
-#include <netdb.h>
-#endif
-#include <errno.h>
-#include "SimpleHash.h"
-#include "GenericHashtable.h"
-
-struct RuntimeHash *fdtoobject;
-
-int CALL24(___Socket______nativeConnect____I__AR_B_I, int ___fd___, int ___port___, struct ___Socket___ * ___this___, int ___fd___, struct ArrayObject * ___address___ ,int ___port___) {
-#ifdef RAW
-       // not supported in RAW version
-       return -1;
-#else
-  struct sockaddr_in sin;
-  int rc;
-  
-  bzero(&sin, sizeof(sin));
-  sin.sin_family= AF_INET;
-  sin.sin_port=htons(___port___);
-  sin.sin_addr.s_addr=htonl(*(int *)(((char *)&VAR(___address___)->___length___)+sizeof(int)));
-#if defined(THREADS)||defined(DSTM)
-#ifdef PRECISE_GC
-  struct listitem *tmp=stopforgc((struct garbagelist *)___params___);
-#endif
-#endif
-  do {
-    rc = connect(___fd___, (struct sockaddr *) &sin, sizeof(sin));
-  } while (rc<0 && errno==EINTR); /* repeat if interrupted */
-#if defined(THREADS)||defined(DSTM)
-#ifdef PRECISE_GC
-  restartaftergc(tmp);
-#endif
-#endif
-
-  
-  if (rc<0) goto error;
-
-#ifdef TASK
-  //Make non-blocking
-  fcntl(___fd___, F_SETFD, 1);
-  fcntl(___fd___, F_SETFL, fcntl(___fd___, F_GETFL)|O_NONBLOCK);
-  RuntimeHashadd(fdtoobject, ___fd___, (int) VAR(___this___));
-  addreadfd(___fd___);
-#endif
-
-  return 0;
-  
- error:
-  close(___fd___);
-  return -1;
-#endif
-}
-
-#ifdef TASK
-int CALL12(___Socket______nativeBindFD____I, int ___fd___, struct ___Socket___ * ___this___, int ___fd___) {
-  if (RuntimeHashcontainskey(fdtoobject, ___fd___))
-      RuntimeHashremovekey(fdtoobject, ___fd___);
-  RuntimeHashadd(fdtoobject, ___fd___, (int) VAR(___this___));
-  addreadfd(___fd___);
-}
-#endif
-
-
-int CALL12(___Socket______nativeBind_____AR_B_I, int ___port___,  struct ArrayObject * ___address___, int ___port___) {
-#ifdef RAW
-       // not supported in RAW version
-       return -1;
-#else
-  int fd;
-  int rc;
-  socklen_t sa_size;
-  struct sockaddr_in sin;
-  bzero(&sin, sizeof(sin));
-  sin.sin_family= AF_INET;
-  sin.sin_port=0;
-  sin.sin_addr.s_addr=INADDR_ANY;
-  
-  fd=socket(AF_INET, SOCK_STREAM, 0);
-  if (fd<0) {
-#ifdef DEBUG
-    perror(NULL);
-    printf("createSocket error in nativeBind\n");
-#endif
-#ifdef TASK
-    longjmp(error_handler,12);
-#else
-#ifdef THREADS
-    threadexit();
-#else
-    exit(-1);
-#endif
-#endif
-  }
-  
-  rc = bind(fd, (struct sockaddr *) &sin, sizeof(sin));
-  if (rc<0) goto error;
-
-  sa_size = sizeof(sin);
-  rc = getsockname(fd, (struct sockaddr *) &sin, &sa_size);
-  if (rc<0) goto error;
-
-  return fd;
-
- error:
-  close(fd);
-#ifdef DEBUG
-  perror(NULL);
-  printf("createSocket error #2 in nativeBind\n");
-#endif
-#ifdef TASK
-  longjmp(error_handler,13);
-#else
-#ifdef THREADS
-  threadexit();
-#else
-  exit(-1);
-#endif
-#endif
-#endif
-}
-
-struct ArrayObject * CALL01(___InetAddress______getHostByName_____AR_B, struct ArrayObject * ___hostname___) {
-#ifdef RAW
-       // not supported in RAW version
-       return NULL;
-#else
-//struct ArrayObject * CALL01(___InetAddress______getHostByName_____AR_B, struct ___ArrayObject___ * ___hostname___) {
-  int length=VAR(___hostname___)->___length___;
-  int i,j,n;
-  char * str=malloc(length+1);
-  struct hostent *h;
-  struct ArrayObject * arraybytearray;
-
-  for(i=0;i<length;i++) {
-    str[i]=(((char *)&VAR(___hostname___)->___length___)+sizeof(int))[i];
-  }
-  str[length]=0;
-  h=gethostbyname(str);
-  free(str);
-  
-  for (n=0; h->h_addr_list[n]; n++) /* do nothing */ ;
-  
-#ifdef PRECISE_GC
-  arraybytearray=allocate_newarray(___params___,BYTEARRAYARRAYTYPE,n);
-#else
-  arraybytearray=allocate_newarray(BYTEARRAYARRAYTYPE,n);
-#endif
-  for(i=0;i<n;i++) {
-    struct ArrayObject *bytearray;
-#ifdef PRECISE_GC
-    {
-      int ptrarray[]={1, (int) ___params___, (int)arraybytearray};
-      bytearray=allocate_newarray(&ptrarray,BYTEARRAYTYPE,h->h_length);
-      arraybytearray=(struct ArrayObject *) ptrarray[2];
-    }
-#else
-    bytearray=allocate_newarray(BYTEARRAYTYPE,h->h_length);
-#endif
-    ((void **)&((&arraybytearray->___length___)[1]))[i]=bytearray;
-    {
-      int ha=ntohl(*(int *)h->h_addr_list[i]);
-      (&bytearray->___length___)[1]=ha;
-    }
-  }
-  
-  return arraybytearray;
-#endif
-}
-
-
-int CALL12(___ServerSocket______createSocket____I, int port, struct ___ServerSocket___ * ___this___, int port) {
-#ifdef RAW
-       // not supported in RAW version
-       return -1;
-#else
-  int fd;
-
-  int n=1;
-  struct sockaddr_in sin;
-
-  bzero(&sin, sizeof(sin));
-  sin.sin_family = AF_INET;
-  sin.sin_port = htons (port);
-  sin.sin_addr.s_addr = htonl (INADDR_ANY);
-  fd=socket(AF_INET, SOCK_STREAM, 0);
-  if (fd<0) {
-#ifdef DEBUG
-    perror(NULL);
-    printf("createSocket error #1\n");
-#endif
-#ifdef TASK
-    longjmp(error_handler,5);
-#else
-#ifdef THREADS
-    threadexit();
-#else
-    exit(-1);
-#endif
-#endif
-  }
-
-  if (setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (char *)&n, sizeof (n)) < 0) {
-    close(fd);
-#ifdef DEBUG
-    perror("");
-    printf("createSocket error #2\n");
-#endif
-#ifdef TASK
-    longjmp(error_handler,6);
-#else
-#ifdef THREADS
-    threadexit();
-#else
-    exit(-1);
-#endif
-#endif
-  }
-
-#ifdef MAC
-        if (setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &n, sizeof (n)) < 0) {
-         perror("socket");
-         exit(-1);
-       }
-#endif
-
-#ifdef TASK
-  fcntl(fd, F_SETFD, 1);
-  fcntl(fd, F_SETFL, fcntl(fd, F_GETFL)|O_NONBLOCK);
-#endif
-
-  /* bind to port */
-  if (bind(fd, (struct sockaddr *) &sin, sizeof(sin))<0) { 
-    close(fd);
-#ifdef DEBUG
-    perror("");
-    printf("createSocket error #3\n");
-#endif
-#ifdef TASK
-    longjmp(error_handler,7);
-#else
-#ifdef THREADS
-    threadexit();
-#else
-    exit(-1);
-#endif
-#endif
-  }
-
-  /* listen */
-  if (listen(fd, 5)<0) { 
-    close (fd);
-#ifdef DEBUG
-    perror("");
-    printf("createSocket error #4\n");
-#endif
-#ifdef TASK
-    longjmp(error_handler,8);
-#else
-#ifdef THREADS
-    threadexit();
-#else
-    exit(-1);
-#endif
-#endif
-  }
-
-  /* Store the fd/socket object mapping */
-#ifdef TASK
-  RuntimeHashadd(fdtoobject, fd, (int) VAR(___this___));
-  addreadfd(fd);
-#endif
-  return fd;
-#endif
-}
-
-int CALL02(___ServerSocket______nativeaccept____L___Socket___,struct ___ServerSocket___ * ___this___, struct ___Socket___ * ___s___) {
-#ifdef RAW
-       // not supported in RAW version
-       return -1;
-#else
-  struct sockaddr_in sin;
-  unsigned int sinlen=sizeof(sin);
-  int fd=VAR(___this___)->___fd___;
-  int newfd;
-#if defined(THREADS)||defined(DSTM)
-#ifdef PRECISE_GC
-  struct listitem *tmp=stopforgc((struct garbagelist *)___params___);
-#endif
-#endif
-  newfd=accept(fd, (struct sockaddr *)&sin, &sinlen);
-#if defined(THREADS)||defined(DSTM)
-#ifdef PRECISE_GC
-  restartaftergc(tmp);
-#endif
-#endif
-  if (newfd<0) { 
-#ifdef DEBUG
-    perror(NULL);
-    printf("acceptSocket error #1\n");
-#endif
-#ifdef TASK
-    longjmp(error_handler,9);
-#else
-#ifdef THREADS
-    threadexit();
-#else
-    exit(-1);
-#endif
-#endif
-  }
-#ifdef TASK
-  fcntl(newfd, F_SETFL, fcntl(fd, F_GETFL)|O_NONBLOCK);
-  RuntimeHashadd(fdtoobject, newfd, (int) VAR(___s___));
-  addreadfd(newfd);
-#ifdef MULTICORE
-  flagorand(VAR(___this___),0,0xFFFFFFFE,NULL,0);
-  enqueueObject(VAR(___this___), NULL, 0);
-  //flagorand(VAR(___this___),0,0xFFFFFFFE,objq4socketobj[corenum],numqueues4socketobj[corenum]);
-  //enqueueObject(VAR(___this___), objq4socketobj[corenum], numqueues4socketobj[corenum]);
-#else
-  flagorand(VAR(___this___),0,0xFFFFFFFE);
-  enqueueObject(VAR(___this___));
-#endif
-#endif
-  return newfd;
-#endif
-}
-
-void CALL24(___Socket______nativeWrite_____AR_B_I_I, int offset, int length, struct ___Socket___ * ___this___, struct ArrayObject * ___b___, int offset, int length) {
-  int fd=VAR(___this___)->___fd___;
-  char * charstr=((char *)& VAR(___b___)->___length___)+sizeof(int)+offset;
-  while(1) {
-    int offset=0;
-    int bytewritten;
-    while(length>0) {
-      bytewritten=write(fd, &charstr[offset], length);
-      if (bytewritten==-1&&errno!=EAGAIN)
-       break;
-      length-=bytewritten;
-      offset+=bytewritten;
-   }
-
-    if (length!=0) {
-#ifndef RAW
-      perror("ERROR IN NATIVEWRITE");
-      printf("error=%d remaining bytes %d\n",errno, length); 
-#endif
-    }
-    break;
-  }
-}
-
-int CALL02(___Socket______nativeRead_____AR_B, struct ___Socket___ * ___this___, struct ArrayObject * ___b___) {
-  int fd=VAR(___this___)->___fd___;
-  int length=VAR(___b___)->___length___;
-
-  char * charstr=malloc(length);
-  
-#if defined(THREADS)||defined(DSTM)
-#ifdef PRECISE_GC
-  struct listitem *tmp=stopforgc((struct garbagelist *)___params___);
-#endif
-#endif
-  int byteread=-1;
-
-  //  printf("Doing read on %d\n",fd);
-  do {
-    byteread=read(fd, charstr, length);
-  } while(byteread==-1&&errno==EINTR);
-#if defined(THREADS)||defined(DSTM)
-#ifdef PRECISE_GC
-  restartaftergc(tmp);
-#endif
-#endif
-  
-  {
-    int i;
-    for(i=0;i<byteread;i++) {
-      (((char *)& VAR(___b___)->___length___)+sizeof(int))[i]=charstr[i];
-    }
-    free(charstr);
-  }
-
-
-  if (byteread<0) {
-#ifndef RAW
-    printf("ERROR IN NATIVEREAD\n");
-    perror("");
-#endif
-  }
-#ifdef TASK
-#ifdef MULTICORE
-  flagorand(VAR(___this___),0,0xFFFFFFFE,NULL,0);
-  enqueueObject(VAR(___this___), NULL, 0);
-  //flagorand(VAR(___this___),0,0xFFFFFFFE,objq4socketobj[corenum],numqueues4socketobj[corenum]);
-  //enqueueObject(VAR(___this___),objq4socketobj[corenum],numqueues4socketobj[corenum]);
-#else
-  flagorand(VAR(___this___),0,0xFFFFFFFE);
-  enqueueObject(VAR(___this___));
-#endif
-#endif
-  return byteread;
-}
-
-void CALL01(___Socket______nativeClose____, struct ___Socket___ * ___this___) {
-  int fd=VAR(___this___)->___fd___;
-  int data;
-#ifdef TASK
-  RuntimeHashget(fdtoobject, fd, &data);
-  RuntimeHashremove(fdtoobject, fd, data);
-  removereadfd(fd);
-#ifdef MULTICORE
-  flagorand(VAR(___this___),0,0xFFFFFFFE,NULL,0);
-  enqueueObject(VAR(___this___), NULL, 0);
-  //flagorand(VAR(___this___),0,0xFFFFFFFE,objq4socketobj[corenum],numqueues4socketobj[corenum]);
-  //enqueueObject(VAR(___this___),objq4socketobj[corenum],numqueues4socketobj[corenum]);
-#else
-  flagorand(VAR(___this___),0,0xFFFFFFFE);
-  enqueueObject(VAR(___this___));
-#endif
-#endif
-  close(fd);
-}