![]() |
Somebody Help! I am currently doing a project on Furi. I am supposed to figure about how Furi works. And more than just figuring out the architecture, I have to suggest some ways to improve Furi. I have download the source code of Furi, but as you all know, reading source code is a quite hard work, so could anyone one give me some documentation on how Furi was designed? (Classes used, what functions performed by each class, relations between classes, any assumptions made, any unique way of solving some issues, whatever) Thanks a lot. Please do help me. |
This sound pretty good. I am trying just the same, but unfortunately I didnīt get very far yet. At the present, there is a big computer-related convention here in Germany (the CeBIT) and I am busy beyond rationality. But when it is over I will take some time to work into the Furi-Source. Nevertheless I would be happy if you shared your information as soon as you have any (perhaps on a web-page). I will do just the same the moment I have any idea about how Furi works. I will keep you informed through this Forum. Bye, Konrad |
Hi, I've spent some time in the last couple of weeks going through the Furi code, so what follows are just some preliminary observations. On the whole, I'm very impressed - it's pretty good and extensible. 1. The main UI classes are the MainFrame and BaseFrame classes: BF provides the basic support for a UI and then MainFrame adds all of the Furi-specific components. 2. UI actions are managed through the Furi.properties file. Essentially, Furi is designed to have pluggable action classes that you associate to each UI component when the applications starts-up. This makes adding menu items and functions a snap. All of the Action classes extend the ActionBase class by overwriting the actionPerformed and refresh methods. The former is the real action method: refresh just helps the Action button or menu item know whether it is enabled or not. 3. Dialog boxes are associated with some but not all of the actions. These all extend JDialog. 4. UI items such as buttons, textfields, and tables have ActionListeners attached to them. These are usually Handler classes that call some MainFrame method that performs the action logic. Most handlers also call refreshAllActions - this calls the refresh method of each Action class. So much for the UI: now come the interesting bits! 4. On startup, Furi intializes several Manager classes: these manage the various main functions of Furi. There is a single instance of each, created by the ServiceManager on start-up. The Managers work with Worker classes to handle requests. The SendManager is responsible for queeing outbound messages and it spawns SendWorker threads as required. 5. Worker classes all implement the runnable interface in order that each Worker can be spawned in its own Thread. For example, a ReadWorker will typically process a request by performing a handshake with a remote host (represented by the Host class) and then processing the request using its processIncomingData method. Most of the time the Listener class is responsible for listening for connections and handing off the Host to a ReadWorker instance. Each Host comes with its input stream (to read the request) and output stream (to write the response). 6. The message classes are used to encapsulate messages: header information is provided in the MsgHeader class (includng the Host), and the header is used to retrieve the body of the message in the form of a byte array. Possibly the single biggest improvement that could be made is organizational: providing a better package structure would help. The MainFrame class is huge - one change I made was to pull the Handlers out into their own class. I've also pulled the Actions, Dialog, and TableModels into their own packages to make it easier see the forest for the trees. Hope this helps. Martin |
Thanks a lot. I am supposed to work out the first report on Furi in weeks. I am working on it now. |
Can I download the more "ordered" version of Furi somewhere? |
I made a little "Furi-Developer-Package". It requires "ant" from the jakarta project. If it is installed correctly you will find a standardized file-structure: - src - src/resources - bin - classes and a build.xml With the simple command "ant dist" furi will be compiled and packed into the well know "furi.jar" If there is a need for this developer-package i would probably take the time to put it on my homepage. So, tell me if you have use for it. Bye, Konrad |
I do want it. your web site url please. |
All times are GMT -7. The time now is 02:02 PM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.
Copyright Đ 2020 Gnutella Forums.
All Rights Reserved.