From: Mark Thom Date: Tue, 5 May 2020 20:15:16 +0000 (-0600) Subject: change EOFCode eof_action from end_of_stream to end_of_file, add echo_server.pl example X-Git-Tag: v0.8.123~57^2~11 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=9a63b1751b574060d98e85b3cbf3ca52a49a2c1d;p=scryer-prolog.git change EOFCode eof_action from end_of_stream to end_of_file, add echo_server.pl example --- 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;