[Openmcl-devel] Need advice on porting an application from LW

Barry Perryman gekki_uk at hotmail.com
Wed Sep 11 13:43:57 PDT 2002


You are right, the LW stuff does provide a higher level of abstraction, but 
fortunately there isn't that much to do to get similar results in OpenMCL.

As a starting point you could use the Portable AServe code and rewrite the 
support you have in your existing application to be portable, or 
alternatively there is some example code in the distribution for the finger 
protocol - both client and and a multi process server.

I haven't yet had a chance to look at the Portable AServe code, but the 
finger code I'm fairly familiar with - let me know if you have any problems.


>From: Marco Antoniotti <marcoxa at cs.nyu.edu>
>To: openmcl-devel at clozure.com
>Subject: [Openmcl-devel] Need advice on porting an application from LW
>Date: Wed, 11 Sep 2002 15:28:59 -0400
>I have LW application which communicates with a Java program over a
>socket.  The CL code acts as the "server".
>I need to port this application to OS X.
>Note that the LW application makes use the MP package and of the COMM
>package (which seems to me to be at a higher level of abstraction than
>the OpenMCL socket library).
>Given that I do not have much experience with network programming, I
>need some advice about how to go ahead and do this in OpenMCL.
>The main code I have looks like the following (in LW).
>(defun accept-client-connection (socket-handle)
>   (let ((socket-stream (make-instance 'comm:socket-stream
>                                       :socket socket-handle
>                                       :direction :io
>                                       :element-type 'base-char
>                                       ))
>         )
>     (setf *sc-visualization-display-socket* socket-stream)
>     (setf *sc-visualization-server-process*
>           (mp:process-run-function (format nil "Visualization Server 
>Handler ~D"
>                                            socket-handle)
>                                    '()
>                                    #'visualization-handle-client-request
>                                    socket-stream
>                                    ))
>     ))
>(defun start-visualization ()
>     ;; Set up the server.
>     (comm:start-up-server :function 'accept-client-connection
>                           :service *sc-visualization-display-port*
>                           :process-name "Visualization Display Server 
>     (setf *sc-visualization-display-server*
>           (mp:find-process-from-name "Visualization Display Server 9876"))
>     )
>The function VISUALIZATION-HANDLE-CLIENT-REQUEST simply implements a
>loop that reads from the socket.
>I'd appreciate any help and suggestions.  I know the OpenMCL code is
>probably going to be more complex.
>Marco Antoniotti ========================================================
>NYU Courant Bioinformatics Group        tel. +1 - 212 - 998 3488
>715 Broadway 10th Floor                 fax  +1 - 212 - 995 4122
>New York, NY 10003, USA                 http://bioinformatics.cat.nyu.edu
>                     "Hello New York! We'll do what we can!"
>                            Bill Murray in `Ghostbusters'.
>Openmcl-devel mailing list
>Openmcl-devel at clozure.com

MSN Photos is the easiest way to share and print your photos: 

Openmcl-devel mailing list
Openmcl-devel at clozure.com

More information about the Openmcl-devel mailing list