~ 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))) ;; utilsTrap