$Id$

API design goals:

These design goals relate to a high-level api library for speaking the owamp
protocol. The over-arching goal of the API is to support writing of the
applications specified in the usage_cases document. Additionally,
specific design goals for the implementation of the API are as follows:

1. Create a high-level API that makes it more simple for application/server
developers to write owamp compliant applications. Specifically, the API should:
	A. Abstract away the actual message formatting including encryption
	B. Ensure protocol messages are only sent when valid

2. API should be efficient - minimize the amount of time between initial
connection and availability for test session start.

3. API should as much as possible abstract away the
encryption/authentication requirements. The application will need to
manage the mapping from user->keyid and from keyid->shared_secret, but
the actual CBC/AES encodeing/decoding of the data stream should be
invisible to the user.

4. The actual call structure/data structures in the API should be
designed in such a way as to make the API as easy as possible to
interface to other languages. C, Perl, Java, and Python are the primary
languages we envision applications being written in.
