Mon Jan 1, 1996

What it does correctly
----------------------

Correctly parses most C_SYNC messages.

Stores and retrieves sector, unit, ship, plane info. Also build info.
Structures are being correctly filled in from received C_SYNC data.
Low level retrieval routines seem to work correctly.

What's wrong with it?
---------------------

High level retrieval routines not implemented yet.

Other structures are not in the database yet, although that's
mostly a matter of adding a pair of fields to the Empire_Database
structure and defining an entry in objtab.c for every structure
that needs to be supported.

Still no serious attempt yet to address portability to Windows.

Storage and retrieval need to be improved for both speed and space usage.

There's probably some memory leaks with structures not being deallocated
when they're no longer used.

I've been testing with old server data, so these problems may be fixed,
but in some instances dictionary entries and data fields are incorrect.
You can #define Debug in edbproc.h to get some diagnostics. You'll see
Two or three different types of messages. See the section below on
toolkit diags.


Notes
-----

To compile this right now, you need to include various header files from the
server. Also, the makefile is probably not portable.

Also, some small changes need to be made to the server header files.
One thing, in particular, is that ef_type still needs to be added to
all the class types. (schrstr,lchrstr,mchrstr, etc).


Toolkit Diags:
--------------

These are example of some of the messages from the toolkit when diagnostics
are enabled.

>>>	csync: unknown csync type: 1

	This means that a csync message  was received that could not
	be identified.

	The csync message is ignored.

>>>	csync: warning: field not bound: gun

	This means that the field definition couldn't be matched up
	with an actual field in the toolkit's database. Possibly 
	because the edb.c for the toolkit doesn't match edb.c
	for the server.

	That field will not be stored in the database when csync object
	records are received.

>>>	csync: warning: duplicate field def for object 195: gun

	This means that the same name is given to a field more than
	once in a type definition.

	The duplicate fields are ignored. Data in csync object records
	in that position will be dropped.

>>>	csync: typedef, unknown base object 336 for object 323

	This means that a type definition was received referencing a
	base object type that has not yet been defined. This is probably
	an error.

	The type definition will still be parsed and stored, but without
	the corresponding base class information.

>>>	csync: warning: unknown object type 329

	This means that we've received a definition for a type that
	we could not match up with a known type. This is not an error
	if the type in question is an abstract type that is never
	instantiated.

	The type information will still be parsed and stored, but 
	corresponding object records cannot be stored.

>>>	csync: no physical representation for object: 329

	We received a csync object that we could not instantiate.
	the message is ignored.


