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. |