Hi there, I'm a new user building an expert system backed by ECLiPSe and accessible from a web application written in PHP. I have implemented the remote protocol and EXDR parsing/generation described in the user manual on the PHP side and performed some tests with success. Now, the problem is that I need to socket/bind/listen and put the application on the ECLiPSe side in the classic "accept" infinite loop waiting for client connections (for now, let's ignore any performance issue may derive from such an iterative server). I had some troubles in doing this because the socket/bind/listen (performed by new_socket_server/3) and the generation of a valid, not existing peer name (performed by new_remote_peer_name/1) are coupled in remote_connect_setup/3, and the generated peer name has to be passed as an argument in remote_connect_accept/6. Thus, I can't generate a peer name for a new connection without to bind to a socket that (at the second turn in the loop) is already bound and so an exception is raised. I tried to split remote_connect_setup/3 and remote_connect_accept/6 in two predicates, and in this case the "already bound exception" is raised occasionally (I guess it depends upon when the close() syscall is invoked); so this is not a solution. Another problem I have is that I wish to control the backlog queue size for the socket created in remote_connect_setup, because the default hardcoded value of 2 may be too small in a web application context. A solution to both may be define new remote_protocol_setup and remote_protocol_accept predicates, but sepia_kernel module (reasonably) does not expose all terms needed to write such predicates. The last chance seems to add such predicates in Kernel/lib/io.pl. How can I recompile only the kernel module to integrate such changes? I'm working on a FreeBSD platform executing ECLiPSe binaries in Linux emulation mode. Thanks in advance, Andrea MontemaggioReceived on Fri Jan 30 2009 - 18:00:34 CET
This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:20 CEST