OIL2 and C++ Example Source Code

The example OIL2 and C++ source code files referenced from this page are covered under the Sample Programs clause of the FARGOS Development, LLC End User License Agreement.

Email System

The following four files comprise an integrated email system. They can be used to implement a private email system for an office.

SMTP Server

Most email in the Internet is transferred using the Simple Mail Transfer Protocol (RFC 2821). The source file below implements an SMTP server that will receive incoming email and deliver it to a local mailbox.

clSMTPserver.oil

Mailbox Storage

A user's email messages need to be stored someplace; the source file below implements email mailboxes using PersistentObjects.

clSMTPmailbox.oil

POP3 Server

User's need some mechanism to retrieve their locally delivered messages; the source file below implements a Post Office Protocol 3 server (RFC 1939), which is supported by most email user agents. It retrieves and deletes messages that were stored in the mailbox storage system implemented above.

clPOP3server.oil

HTTP-based Mailbox Administration

The creation, deletion and administration of user mailboxes using a World Wide Web browser is enabled by the source code below. It implements an application that integrates with the HTTPdaemon and mailbox storage system above.

clHTTPmailbox.oil

Newsgroup Services

Non-realtime discussions have been long been handled by newsgroups, which predate the wide connectivity currently enjoyed by the public Internet (for example, inter-site news exchange was accomplished using UUCP and UUNET's origins are that of a News provider). The Network News Transfer Protocol (NNTP) was one of the early Internet RFCs (RFC 977) and added another core transport protocol to the suite of telnet, FTP and SMTP. Common NNTP extensions were subsequently documented in RFC 2980. The following source files implement an RFC 977-compliant NNTP server enhanced with several RFC 2980 extensions that are used by popular newsreading clients.

clNNTPserver.oil

clNNTPnewsgroups.oil

clNNTParticle.oil

HTTP-based Newsgroup Administration

The creation, deletion and administration of newsgroups using a World Wide Web browser is enabled by the source code below. It implements an application that integrates with the HTTPdaemon and newsgroup storage system above.

clHTTPnewsgroups.oil

Distributed Job Controller

Some workloads are comprised of a collection of work units. Many scientific applications meet these criteria. The buzzword that is currently in vogue is "grid computing", but the concept is hardly new. The source code below implements a distributed job controller that farms work out across multiple hosts.

clJobCntrl.oil

Web Services Description Language Compiler

A Web Services Description Language file describes the interfaces to a SOAP-based service provider. More details are provided at http://www.w3.org/TR/wsdl and http://www.w3.org/TR/SOAP. The source code below implements an application (the class WSDLtoOIL2) that converts a Web Services Description Language file into OIL2 source code that implements the corresponding interfaces to the remote service.

clWSDL.oil

The source code below implements some SOAP-related support methods that are used by the source generated by WSDLtoOIL2.

clSOAPservice.oil

WSDL Example

As an illustration of usage, Google had made available an application programing interface and authored a Web Services Description Language file that described the service they exposed. The WSDL file in question was available from http://api.google.com/GoogleSearch.wsdl, but Google withdrew support for the API in September 2009. The corresponding OIL2 source code for the Google API generated by the WSDLtoOIL2 class is retrievable below:

clGoogleSearchService.oil

Note: since the clGoogleSearchService.oil file was programatically derived from the GoogleSearch.wsdl by the WSDLtoOIL2 class, the authors of the WSDL file ultimately contributed a significant amount of intellectual property when they wrote their formal description of the API. As a consequence, we appreciated that Google granted us permission to make available the automatically-generated clGoogleSearchService.oil source code above. The Google API required the use of a user identification key, which was easily obtainable from Google. No FARGOS Development, LLC distributions contained an embedded Google access key—interested users had to request their own key from Google; Google stopped providing these in 2006.

Persistent Object Database Daemon

As a demonstration of connecting an external application into a FARGOS/VISTA Object Management Environment, the C++ source code provided below implements a daemon that provides persistent object storage services.

persistd.cpp

Final Fantasy XIII-2 Hands of Time Solver

Two algorithmic solutions for solving the Hands of Time puzzles that appear in Final Fantasy XIII-2 are found in the file below. The first class uses a single thread to perform a recursive exploration to find a solution and displays the first one found. The second is a subclass which uses a separate thread to explore each potential solution and displays all solutions that are discovered.

clFF132_clock.oil