What's that? What can i do with it?
Long story short, it is a message dispatching package that allows you to just design and use your application specific networkmessages as classes.
All you need to do is to write a headerhandler (if none of the provided ones suit your needs) that evaluates the headers of your messages, write the MessageHandlers
that contain your message handling logic (ie they call stuff from your application), set up the PacketManager and can start
to pass him messages over the wire.
Detailed information could be obtained from the package's
README.txt.
The main features are:
- Message dispatching:
The core functionality of SimpleNet is a message dispatching facility. Incoming byte messages (ByteBuffer)
from the wire can be directly put into the PacketManager, who investigates the header of the message
and then dispatches the message to a suitable handler.
- Event driven design:
The design enables you to process messages event driven. It even makes it trivial to use different
threads to process messages in parallel.
- Design messages instead of boilerplate code:
SimpleNet allows you to keep your mind on the really important task: Designing your application logic
and the actual network messages.
- Flexibility:
The messages can have arbitrary wire formats. This allows for maximum message flexibility,
including the possibility to use (for example) Googles Protocol buffers
to even further ease your design tasks.
- Lightning fast:
Because of the internal architecture of the PacketManager, the dispatching process is lightning fast
and should maintain a constant time regardless of the ammount of different message types.
How can i get the code? How can i install and use SimpleNet?
As a end user (that is, programmer)
If you want to use SimpleNet in your own project, you should grab the latest file release which
contains the compiled classes, examples and an API doc. You can getting started with SimpleNet
by performing the following steps:
- Download the latest file release
- Extract it somewhere on your hard disk
- Go to the doc folder where you can find documentation, examples, and the API doc
- Add it to the class path of your Java project to be able to link to SimpleNet
(Depending on your IDE, you may wish to add it also there)
- Use it like any other API
Daily builds
There were used to be daily builds but unfortunately they are not offered anymore. You can easily build the project yopurself with the
ant script from svn.
Getting the bleeding edge code
If you want to help this project or just want to see the source code, you can either use the
web based SVN browser or checkout a working copy with your favorite SVN client. Information for accessing
SVN and also an overview over the latest development activities can be found on the SF
development site.
As said above, be warned that the latest source may not work or compile.
Where can i find documentation like examples and an APIdoc?
Everything you need is contained both in the SVN source tree and in the file releases.
This lib is crap and buggy!
Great! Luckily this is an open source project, so you can instanteaneous help to solve that problem.
Thats as easy as opening a bug at our
bugtracker.
I want to help you! What can i do?
If you want to help me, it is best to check out from SVN (see above) and have a look at the 'doc' directory.
Help is warmly appreciated everywhere.
You can submit patches at the
patchtracker. Please use unified diffs (diff -u).
Of course it will be a good thing to test SimpleNet and open bugreports on the tracker.
Also it would be nice if you tell me your ideas about enhancements - just open a feature request ticket at the tracker.
How can i get help if i get stuck?
The best thing you can do is to open a ticket at our
support request tracker.
If you think you found a bug, please open a ticket at the
bugtracker instead.
History of this project
This lib was born as an idea while i fiddled around with
protobuf and Sun's
Project Darsktar (
RedDwarf since Sun was bought by Oracle). I needed some fast and easy way to dispatch arbitrary message objects to darkstar tasks that should then
handle these messages. As i don't wanted to code up my message classes manually like i did in other projects before, i
coded up a small class that should deal with protobufs extensions. However i found that rather uncomfortable and also
needed a way to be able to mix protobuf messages with handcrafted ones. So i rewrote the library again to make it
message type agnostic. The trick is done mainly by the HeaderHandler, which is able to extract some header fields like
the message type but is also responsible to insert those headers onto messages before sending them over the wire.
As i found that working and useful, i wanted to share it with the community, and was allowed to do so by my fellow
CEOs at
Gearfore GbR.
Cool, okay. Is there more on this website than just this?
Well - no, for the following reason: All of our news, releases and other stuff will be on the
Sourceforge.net poject site, so duplicating them is just work overhead.
Please have a look on our
Sourceforge.net project site.
I will update this website infrequently, the most recent informations will always be on SF!