Newsgroups: comp.sys.transputer
From: davee@pact.srf.ac.uk (Dave Edwards)
Subject: Re: Desperatly seeking help on Aserver+Iserver
Organization: University of Bristol, England
Date: Tue, 29 Nov 1994 13:00:31 GMT
Message-ID: <D015Gv.I1F@info.bris.ac.uk>

hi,


: OK, are any of the designers/implementors of Aserver reading this group ?
: Is there any body else outthere that could be of assistance ?

once upon i time i worked on both the b300 and inquest/aserver.
these days i'm working on something entirely different but
here is a quick brain dump. 

the standard aserver gateway provided with d4300a/b inquest will not allow
socket programs to work. this is (as you correctly spotted) due to the
packet header being converted into a mega-packet and so the b300 cannot
filter the socket request.

there are 2 "easy" workarounds:

  *) use another link from your transputer system and connect this link
     to another subsystem of the b300. configure your application so that
     the socket traffic goes through this other link (and isn't passed through
     an aserver gateway)

  *) write a replacement version of the aserver gateway.

     this will have to determine whether it is receiving a socket request
     from a processes. the reply values used by the socket library are
     entirely synchronous - only 1 can be outstanding at once.

     i did almost complete writing such a gateway before moving onto another
     project - unfortunatly it was never finished and has probably
     disappeared.

     the gateway's 'normal' structure is:

       par
         while 1
           alt i = 0 for numaserverclients
             fromclient[i] ? x
             ... mux and send to b300

         while 1
           fromb300 ?
           ... demux and send to relevent client

     when a socket request is received from a client 
     the new gateway must ensure that once it has send a socket request to 
     the b300 it doesn't send any more packets until the socket reply has
     been received. thus you should bring the above threads to a nice halt
     and go synchronous:

       tob300link ! socket packet
       gotsocketreply = false
       while (!gotsocketreply) {
         fromb300link ? packet
         if packet = aserver passthrough tag
            buffer for later use
         else 
            gotsocketreply = true
            to.socket.app ! reply
       }


my suggestion is that you contact your distributor/fae to get
some hands on help as the solution requires lots of 'hidden'
knowledge.

good luck!

cheers,


Dave Edwards, Chameleon Software Group,
  davee@pact.srf.ac.uk / davee@inmos.co.uk
  SGS-Thomson Microelectronics Ltd.
  PACT, 10 Priory Road,          tel: +44 0272 707 191
  Bristol BS8 1TU.               fax: +44 0272 707 171
         "endorsed by the moon in its crescent form"

