Next: A working system! Up: Build your own DBMS!! Previous: Server software

# Bonus features

Over the course of about six months, we implemented the entire client/server architecture. With all the building blocks in place, we could implement some extra features with relative ease:

- We needed a report writer; preferably one that could run on the server. By creating reports on the server, the client PCs would require minimal software and infrequent upgrades. Furthermore, reports could be produced very quickly, since no data would travel across any network, no matter how fast.

  We already had a system (from a previous project) that could convert a high-level description of a report into C source code, to be linked against CodeBase. We integrated stand-alone executable reports written using this tool into the server, so that a client could request a report and the server would deliver only the output.

- Every Unix system is configured with a mailer. In our case, the mailer was just `sendmail`. We wanted to give the end-users access to e-mail, but over the encrypted SSL connection rather than directly. To do this, we added a rudimentary e-mail user interface to the client and a thin server, that just talks to `sendmail` over a local SMTP socket.
- The client/server database, along with the server's ability to regularly execute tasks, allowed us to implement a simple bulletin system, where any user could post announcements and the server would automatically delete them after a period of time. The bulletins are stored using a regular table in the database, so access to them is controlled by the same mechanism that controls access to data elsewhere in the system.

Next: A working system! Up: Build your own DBMS!! Previous: Server software