Low Level Implementation Information
Unix Hosted Systems

Numerous MultuValue systems are hosted on various flavors of Unix.  PicLan-IP is currently shipping with only D3/Linux, but additional ports are actively underway:
  • D3/SCO
  • D3/AIX
  • jBase/Linux
  • Unidata/AIX
  • Unidata/Linux
  • Unidata/HPUX
  • Universe/AIX
  • Universe/Linux
  • Universe/HPUX
With hosted systems, PicLan-IP does not implement the low-level TCP/IP protocol stack itself.  Instead, PicLan-IP uses the existing Unix TCP/IP interface, sockets.  This is accomplished with a low-level interface engine written in 'C' and implemented as a Windows daemon.  This interface engine is responsible for low-level network functions such as managing connection sockets, dynamically buffering network connections, queueing events, handling timed functions, etc.  All of these functions are low-level and are not specific to any high-level protocol.  High-level functions like implementing HTTP are handled in BASIC routines that call the low-level engine for data.

The low-level engine is called from BASIC through a generic "remote proceedure call" interface.  There are several variants of this interface depending on the underlying system environment.  These variants are:

  • Local system - transfer data through shared kernel memory
  • Local system - transfer data through local pipes
  • Remote system - transfer data through remote pipes
All of these RPC interfaces provide robust, high-performance call interfaces between BASIC and the communication library.  Most hosts support the "local system - transfer dta through shared kernel memory" method, which is also the fastest option.  Other options are only slightly slower however and overall performance is still excellent.

The internals of the support daemon are such that a total of 1000 TCP/IP sockets can be in use simultaniously.  Network connections are agressively and dynamically buffered allowing for multi-megabyte transfers to and from the support library without waiting for network traffic.  Because the underlying TCP/IP stacks are used for actual communications there are no real limits to the numbers of IP address or virtual hosts that can be setup concurrently.

High-level PicLan-IP functions are really no different on Unix hosts than on any other PicLan-IP host and actually share 100% of their BASIC source code.  To be fair, the source code is conditionally compiled and massively macro expanded, but this shared environment is very important to Modular Software's ability to maintain PicLan-IP across such as broad array of MultiValue platforms.  It is in this high-level Pick/BASIC code where all of the TCP/IP services are implemented.  Win32 hosts support all of the PicLan-IP services including HTTP, SMTP, POP3, and client APIs.  Because the underlying MultiValue system already supports inbound TELNET, PicLan-IP does not implement these function on Win32.

The result is an extremely efficient, compact, and elegent set of TCP/IP services that are directly implemented within and controlled from the MultiValue environment.  The low-level communications engine allows the environment to execute with extremely good performance while still implementing all high-level protocol functions in standard BASIC for flexibility and ease of interfacing with user application code.