Gnutella Forums  

Go Back   Gnutella Forums > Current Gnutella Client Forums > Phex (Cross-platform) > General Discussion
Register FAQ The Twelve Commandments Members List Calendar Arcade Find the Best VPN Today's Posts

General Discussion For anything which doesn't fit somewhere else (for PHEX users)


Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old March 21st, 2001
Novicius
 
Join Date: March 20th, 2001
Location: Singapore
Posts: 3
sunjun is flying high
Post 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.
Reply With Quote
  #2 (permalink)  
Old March 22nd, 2001
Phex Developer
 
Join Date: August 6th, 2000
Location: Munich, Bavaria, Germany
Posts: 122
konrad_h is flying high
Talking

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
Reply With Quote
  #3 (permalink)  
Old March 22nd, 2001
Novicius
 
Join Date: March 21st, 2001
Location: Saratoga
Posts: 2
martinpg is flying high
Post

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
Reply With Quote
  #4 (permalink)  
Old March 23rd, 2001
Novicius
 
Join Date: March 20th, 2001
Location: Singapore
Posts: 3
sunjun is flying high
Post

Thanks a lot. I am supposed to work out the first report on Furi in weeks. I am working on it now.
Reply With Quote
  #5 (permalink)  
Old March 23rd, 2001
Phex Developer
 
Join Date: August 6th, 2000
Location: Munich, Bavaria, Germany
Posts: 122
konrad_h is flying high
Talking

Can I download the more "ordered" version of Furi somewhere?
Reply With Quote
  #6 (permalink)  
Old March 24th, 2001
Phex Developer
 
Join Date: August 6th, 2000
Location: Munich, Bavaria, Germany
Posts: 122
konrad_h is flying high
Smile

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
Reply With Quote
  #7 (permalink)  
Old March 25th, 2001
Novicius
 
Join Date: March 20th, 2001
Location: Singapore
Posts: 3
sunjun is flying high
Post

I do want it. your web site url please.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT -7. The time now is 04:34 AM.


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.