From 9a63b1751b574060d98e85b3cbf3ca52a49a2c1d Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Tue, 5 May 2020 14:15:16 -0600 Subject: [PATCH] change EOFCode eof_action from end_of_stream to end_of_file, add echo_server.pl example --- src/prolog/examples/echo_server.pl | 31 ++++++++++++++++++++++++++++++ src/prolog/machine/streams.rs | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/prolog/examples/echo_server.pl diff --git a/src/prolog/examples/echo_server.pl b/src/prolog/examples/echo_server.pl new file mode 100644 index 00000000..4543e60d --- /dev/null +++ b/src/prolog/examples/echo_server.pl @@ -0,0 +1,31 @@ +:- module(echo_server, [echo_server/0, + echo_server/1]). + +:- use_module(library(format)). +:- use_module(library(sockets)). + + +echo_server :- + echo_server('127.0.0.1'). + + +echo_server(Addr) :- + socket_server_open(Addr:Port, ServerSocket), + format("echo_server: connection opened at ~w:~d~n", [Addr, Port]), + socket_server_accept(ServerSocket, Client, Stream, [eof_action(eof_code)]), + format("echo_server: connection accepted from ~a~n", [Client]), + !, + echo_loop(Stream), + socket_server_close(ServerSocket). + + +echo_loop(Stream) :- + read_term(Stream, Term, []), + ( Term == end_of_file -> + true + ; + format("received: ~w~n", [Term]), + !, + echo_loop(Stream) + ). + diff --git a/src/prolog/machine/streams.rs b/src/prolog/machine/streams.rs index 3f09d6d1..0c2d9aac 100644 --- a/src/prolog/machine/streams.rs +++ b/src/prolog/machine/streams.rs @@ -356,7 +356,7 @@ impl MachineState { } EOFAction::EOFCode => { let end_of_stream = self.heap.to_unifiable( - HeapCellValue::Atom(clause_name!("end_of_stream"), None) + HeapCellValue::Atom(clause_name!("end_of_file"), None) ); stream.past_end_of_stream = true; -- 2.54.0