-
Notifications
You must be signed in to change notification settings - Fork 1
Library Overview
wowus edited this page Sep 14, 2010
·
8 revisions
The following is a birds-eye-view of the various libraries that GoGo uses, along with their respective responsibilities. If internal documentation is available, it can be found by clicking on the library name.
-
cockpit
- Cockpit is to GoGo as Apache is to your website. All external communication with clients goes through cockpit for cleaning and processing, eventually ending up in a packet registry. All the low-level details are handled for you so you can focus on your goal – making a Gunz server.
- Thread safety: Thread safe
- Dependencies: util
- database
- Database handles all the database transactions with the GunzDB backend in a clean, encapsulated manner. This prevents GoGo from having to rely directly on MySQL or PostgreSQL. This also allows other database backends to be supports trivially – all you have to do is implement the GunzDB interface!
- Thread safety: Reentrant
- Dependencies: util
- gunz
- Gunz handles all the game internals of gunz, not worrying about interfacing with cockpit, the network, etc. All this does is provide a simple API to GoGo to handle Gunz actions such as channel joining, leaving, etc, etc.
- Thread safety: Reentrant
- Dependencies: util
- reflex
- Reflex is our asynchronous message-passing library. Instead of relying on mutexes, this library implements the Actor design pattern for cross-object communication. Also included is a scheduler for throwing actors into appropriate threads, and balancing the load as necessary.
- Thread safety: Reentrant
- Dependencies: None
-
tinyxml
- Tinyxml is a library that has been “adopted” into GoGo. It handles all the nitty gritty details of XML parsing for us, so we don’t have to. It’s very feature-lacking, but that’s okay. We don’t need much for what we do.
- Thread safety: Thread safe
- Dependencies: None
- util
- Just a whole bunch of utility functions/classes. These are generic, and don’t really “belong” with any one library. By factoring the truly generic parts out into a common library, we can enrich our APIs and reduce code duplication.
- Thread safety: Thread safe
- Dependencies: None