~ chicken-core (chicken-5) 03f709f892d1cb515dfc237e7de7cf685efb61f0
commit 03f709f892d1cb515dfc237e7de7cf685efb61f0
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Tue Feb 10 14:12:35 2015 +1300
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Sun Jul 19 21:12:54 2015 +1200
Convert the tcp unit into a module
diff --git a/README b/README
index 6806ecac..e669cb84 100644
--- a/README
+++ b/README
@@ -286,6 +286,7 @@
| | |-- chicken.import.so
| | |-- chicken.data-structures.import.so
| | |-- chicken.ports.import.so
+ | | |-- chicken.tcp.import.so
| | |-- chicken.utils.import.so
| | |-- csi.import.so
| | |-- extras.import.so
@@ -300,7 +301,6 @@
| | |-- setup-download.import.so
| | |-- setup-download.so
| | |-- srfi-4.import.so
- | | |-- tcp.import.so
| | `-- types.db
| |-- libchicken.a
| |-- libchicken.dll.a (Windows)
diff --git a/chicken-bug.scm b/chicken-bug.scm
index f5cc6694..926932c0 100644
--- a/chicken-bug.scm
+++ b/chicken-bug.scm
@@ -26,8 +26,9 @@
(require-library posix tcp data-structures utils extras)
-(import posix tcp extras
+(import posix extras
chicken.data-structures
+ chicken.tcp
chicken.utils)
(define-constant +bug-report-file+ "chicken-bug-report.~a-~a-~a")
diff --git a/chicken-install.scm b/chicken-install.scm
index b9069599..2dede2fd 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -46,6 +46,7 @@
"chicken.import.so"
"chicken.data-structures.import.so"
"chicken.ports.import.so"
+ "chicken.tcp.import.so"
"chicken.utils.import.so"
"lolevel.import.so"
"srfi-1.import.so"
@@ -53,7 +54,6 @@
"files.import.so"
"posix.import.so"
"extras.import.so"
- "tcp.import.so"
"foreign.import.so"
"csi.import.so"
"irregex.import.so"
diff --git a/defaults.make b/defaults.make
index ec0979d2..64eb346f 100644
--- a/defaults.make
+++ b/defaults.make
@@ -267,10 +267,10 @@ CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
# import libraries
-PRIMITIVE_IMPORT_LIBRARIES = chicken lolevel srfi-1 srfi-4 files
-PRIMITIVE_IMPORT_LIBRARIES += posix extras tcp foreign csi irregex
+PRIMITIVE_IMPORT_LIBRARIES = chicken lolevel srfi-4 files
+PRIMITIVE_IMPORT_LIBRARIES += posix extras foreign csi irregex
PRIMITIVE_IMPORT_LIBRARIES += setup-api setup-download
-DYNAMIC_IMPORT_LIBRARIES = data-structures ports utils
+DYNAMIC_IMPORT_LIBRARIES = data-structures ports tcp utils
# targets
diff --git a/distribution/manifest b/distribution/manifest
index 5a834b33..759bc600 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -244,6 +244,8 @@ chicken.data-structures.import.scm
chicken.data-structures.import.c
chicken.ports.import.scm
chicken.ports.import.c
+chicken.tcp.import.scm
+chicken.tcp.import.c
chicken.utils.import.scm
chicken.utils.import.c
foreign.import.scm
@@ -253,13 +255,11 @@ srfi-4.import.scm
posix.import.scm
extras.import.scm
irregex.import.scm
-tcp.import.scm
lolevel.import.c
srfi-4.import.c
posix.import.c
extras.import.c
irregex.import.c
-tcp.import.c
csi.import.scm
csi.import.c
setup-download.scm
diff --git a/modules.scm b/modules.scm
index e47c2ad6..c7965d5d 100644
--- a/modules.scm
+++ b/modules.scm
@@ -915,6 +915,7 @@
(##sys#register-module-alias 'r5rs 'scheme)
(##sys#register-module-alias 'data-structures 'chicken.data-structures)
(##sys#register-module-alias 'ports 'chicken.ports)
+(##sys#register-module-alias 'tcp 'chicken.tcp)
(##sys#register-module-alias 'utils 'chicken.utils)
(register-feature! 'module-environments)
diff --git a/rules.make b/rules.make
index a4b0047f..e5ef7c13 100644
--- a/rules.make
+++ b/rules.make
@@ -563,6 +563,7 @@ csi.c: csi.scm \
chicken.ports.import.scm
chicken-bug.c: chicken-bug.scm \
chicken.data-structures.import.scm \
+ chicken.tcp.import.scm \
chicken.utils.import.scm
chicken-profile.c: chicken-profile.scm \
chicken.data-structures.import.scm
@@ -588,6 +589,7 @@ setup-api.c: setup-api.scm \
setup-download.c: setup-download.scm \
chicken.data-structures.import.scm \
chicken.ports.import.scm \
+ chicken.tcp.import.scm \
chicken.utils.import.scm \
setup-api.import.scm
posixunix.c: posixunix.scm \
@@ -638,7 +640,7 @@ files.c: $(SRCDIR)files.scm $(SRCDIR)common-declarations.scm
lolevel.c: $(SRCDIR)lolevel.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib)
tcp.c: $(SRCDIR)tcp.scm $(SRCDIR)common-declarations.scm
- $(bootstrap-lib)
+ $(bootstrap-lib) -emit-import-library chicken.tcp
srfi-4.c: $(SRCDIR)srfi-4.scm $(SRCDIR)common-declarations.scm
$(bootstrap-lib)
utils.c: $(SRCDIR)utils.scm $(SRCDIR)common-declarations.scm
diff --git a/setup-download.scm b/setup-download.scm
index 9f3ec607..c3455490 100644
--- a/setup-download.scm
+++ b/setup-download.scm
@@ -37,9 +37,10 @@
temporary-directory)
(import scheme chicken foreign)
- (import extras irregex posix tcp files
+ (import extras irregex posix files
setup-api
chicken.data-structures
+ chicken.tcp
chicken.utils)
(include "mini-srfi-1.scm")
diff --git a/tcp.import.scm b/tcp.import.scm
deleted file mode 100644
index c648ad17..00000000
--- a/tcp.import.scm
+++ /dev/null
@@ -1,44 +0,0 @@
-;;;; tcp.import.scm - import library for "tcp" module
-;
-; Copyright (c) 2008-2015, The CHICKEN Team
-; 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 author 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 HOLDERS 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.
-
-
-(##sys#register-primitive-module
- 'tcp
- '(tcp-abandon-port
- tcp-accept
- tcp-accept-ready?
- tcp-accept-timeout
- tcp-addresses
- tcp-buffer-size
- tcp-close
- tcp-connect
- tcp-connect-timeout
- tcp-listen
- tcp-listener-fileno
- tcp-listener-port
- tcp-listener?
- tcp-port-numbers
- tcp-read-timeout
- tcp-write-timeout))
diff --git a/tcp.scm b/tcp.scm
index e12a7521..8c2b9c5a 100644
--- a/tcp.scm
+++ b/tcp.scm
@@ -29,9 +29,6 @@
(unit tcp)
(uses ports scheduler)
(disable-interrupts) ; Avoid race conditions around errno/WSAGetLastError
- (export tcp-close tcp-listen tcp-connect tcp-accept tcp-accept-ready? ##sys#tcp-port->fileno tcp-listener? tcp-addresses
- tcp-abandon-port tcp-listener-port tcp-listener-fileno tcp-port-numbers tcp-buffer-size
- tcp-read-timeout tcp-write-timeout tcp-accept-timeout tcp-connect-timeout)
(foreign-declare #<<EOF
#ifdef _WIN32
# include <winsock2.h>
@@ -140,10 +137,17 @@ static int C_set_socket_options(int socket)
EOF
) )
-(include "common-declarations.scm")
+(module chicken.tcp
+ (tcp-close tcp-listen tcp-connect tcp-accept tcp-accept-ready?
+ tcp-listener? tcp-addresses tcp-abandon-port tcp-listener-port
+ tcp-listener-fileno tcp-port-numbers tcp-buffer-size tcp-read-timeout
+ tcp-write-timeout tcp-accept-timeout tcp-connect-timeout)
+(import scheme chicken foreign)
(import chicken.ports)
+(include "common-declarations.scm")
+
(register-feature! 'tcp)
(define-foreign-type sockaddr* (pointer "struct sockaddr"))
@@ -660,3 +664,5 @@ EOF
(define (tcp-listener-fileno l)
(##sys#check-structure l 'tcp-listener 'tcp-listener-fileno)
(##sys#slot l 1) )
+
+)
diff --git a/tests/runtests.sh b/tests/runtests.sh
index a3a1261c..297bfc35 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -41,7 +41,7 @@ for x in setup-api.so setup-api.import.so setup-download.so \
chicken.ports.import.so chicken.utils.import.so files.import.so \
posix.import.so \
extras.import.so \
- irregex.import.so tcp.import.so \
+ irregex.import.so chicken.tcp.import.so \
foreign.import.so \
csi.import.so irregex.import.so types.db; do
cp ../$x test-repository
diff --git a/types.db b/types.db
index 63c64fd7..67de25e0 100644
--- a/types.db
+++ b/types.db
@@ -2215,27 +2215,27 @@
;; tcp
-(tcp-abandon-port (#(procedure #:clean #:enforce) tcp-abandon-port (port) undefined))
-(tcp-accept (#(procedure #:clean #:enforce) tcp-accept ((struct tcp-listener)) input-port output-port))
-(tcp-accept-ready? (#(procedure #:clean #:enforce) tcp-accept-ready? ((struct tcp-listener)) boolean))
-(tcp-accept-timeout (#(procedure #:clean #:enforce) tcp-accept-timeout (#!optional (or false integer)) (or false integer)))
-(tcp-addresses (#(procedure #:clean #:enforce) tcp-addresses (port) string string))
-(tcp-buffer-size (#(procedure #:clean #:enforce) tcp-buffer-size (#!optional fixnum) fixnum))
-(tcp-close (#(procedure #:clean #:enforce) tcp-close ((struct tcp-listener)) undefined))
-(tcp-connect (#(procedure #:clean #:enforce) tcp-connect (string #!optional fixnum) input-port output-port))
-(tcp-connect-timeout (#(procedure #:clean #:enforce) tcp-connect-timeout (#!optional (or false integer)) (or false integer)))
-(tcp-listen (#(procedure #:clean #:enforce) tcp-listen (fixnum #!optional fixnum *) (struct tcp-listener)))
-
-(tcp-listener-fileno (#(procedure #:clean #:enforce) tcp-listener-fileno ((struct tcp-listener)) fixnum)
+(chicken.tcp#tcp-abandon-port (#(procedure #:clean #:enforce) chicken.tcp#tcp-abandon-port (port) undefined))
+(chicken.tcp#tcp-accept (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept ((struct tcp-listener)) input-port output-port))
+(chicken.tcp#tcp-accept-ready? (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept-ready? ((struct tcp-listener)) boolean))
+(chicken.tcp#tcp-accept-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-addresses (#(procedure #:clean #:enforce) chicken.tcp#tcp-addresses (port) string string))
+(chicken.tcp#tcp-buffer-size (#(procedure #:clean #:enforce) chicken.tcp#tcp-buffer-size (#!optional fixnum) fixnum))
+(chicken.tcp#tcp-close (#(procedure #:clean #:enforce) chicken.tcp#tcp-close ((struct tcp-listener)) undefined))
+(chicken.tcp#tcp-connect (#(procedure #:clean #:enforce) chicken.tcp#tcp-connect (string #!optional fixnum) input-port output-port))
+(chicken.tcp#tcp-connect-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-connect-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-listen (#(procedure #:clean #:enforce) chicken.tcp#tcp-listen (fixnum #!optional fixnum *) (struct tcp-listener)))
+
+(chicken.tcp#tcp-listener-fileno (#(procedure #:clean #:enforce) chicken.tcp#tcp-listener-fileno ((struct tcp-listener)) fixnum)
(((struct tcp-listener)) (##sys#slot #(1) '1)))
-(tcp-listener-port (#(procedure #:clean #:enforce) tcp-listener-port ((struct tcp-listener)) fixnum))
+(chicken.tcp#tcp-listener-port (#(procedure #:clean #:enforce) chicken.tcp#tcp-listener-port ((struct tcp-listener)) fixnum))
-(tcp-listener? (#(procedure #:clean #:predicate (struct tcp-listener)) tcp-listener? (*) boolean))
+(chicken.tcp#tcp-listener? (#(procedure #:clean #:predicate (struct tcp-listener)) chicken.tcp#tcp-listener? (*) boolean))
-(tcp-port-numbers (#(procedure #:clean #:enforce) tcp-port-numbers (port) fixnum fixnum))
-(tcp-read-timeout (#(procedure #:clean #:enforce) tcp-read-timeout (#!optional (or false integer)) (or false integer)))
-(tcp-write-timeout (#(procedure #:clean #:enforce) tcp-write-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-port-numbers (#(procedure #:clean #:enforce) chicken.tcp#tcp-port-numbers (port) fixnum fixnum))
+(chicken.tcp#tcp-read-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-read-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-write-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-write-timeout (#!optional (or false integer)) (or false integer)))
;; utils
Trap