Future Lab provides software under the terms of the General Public License (GPL). For a complete review of these concepts, refer to:
Most of the GPL software provided by Future Lab is written in C, although we will eventually post some software here that is written in other languages. We use C because it is fairly portable (if written correctly) and compact.
Future Lab GPL software is like building a house. Everything is built upon the foundation and many pieces interconnect. For this reason, a natural drawback is that pieces cannot easily be removed from the software.
Most applications are offered in a stand-alone version and a client/server version. The client/server version of the application is built using one of two methods of interprocess communication across multiple platforms:
Future Lab software is be offered in a source only version and a source with already compiled executable version. Not all platforms will have a source with executable version as we do not have access to all platforms.
This next section will briefly describe the GPL modules.
The foundation of our GPL software is the library. The library is made up of ten modules:
The parse module consists of functions that are mostly concerned with string parsing including words and command words.
The file i/o module contains of functions that retrieve or send data to a file stream.
This module provides an API to log messages or information from the application program including shutting off the logging facility
This module contains an API that sends messages to the system logger. This system logging API also allows you to turn off system logging.
The functions in this module provide a TCP socket interface for a client program to access a TCP connection oriented server.
This module provides socket services for a TCP connection oriented server program.
The functions in this module provide a low level TCP interface that both client and server TCP API use.
This module manages TCP configuration data including port number and host name. With the introduction of socloc, this module is no longer use by any Future Lab GPL application but it is still included as it may be of some use.
The functions in this module resolve an IP address from a host name, resolve a host name from IP address and determine whether a string contains a valid IP address.
This category consists of the database engine module and interface API modules. The database engine is based on variable field/record length and typeless data. The following modules are included:
This section deals with the socket locate information. The important components are:
The system logger is a server that accepts messages and logs these messages into a system wide log file. The system logger can accept messages from many machines. The system logger allows you to re-route messages from many machines and applications and put the log in one place.
The database server is a program that accepts database commands.
This application is a command line interface program to the database engine. Both stand-alone and client/server versions are available.
These programs verify the operation of the database engine by randomly picking a operation code and executing it.
This program generates random data to be used as test input data for other programs. The program can generate data with a variety of field and record delimiters. This program is also used to generate data for the Bbuuzzb database engine.
This program will perform a forward and reverse TCP lookup on the IP address and host name. The program will use whatever TCP name resolution method that has been defined.
This socket server keeps track of other socket servers in a network environment so that client applications do not need to know where a specific socket server is in order to connect to it.
This is a simple (quite dumb) socket server that is used for testing.
This client application is used to interface to the dumb socket server and also to the socket locate server.
This command line client application is used to talk to other socket servers and also to socket locate servers.