Gnutella Forums  

Go Back   Gnutella Forums > Current Gnutella Client Forums > Phex (Cross-platform) > Development & Coding > Adapting Phex (private networks)
Register FAQ The Twelve Commandments Members List Calendar Arcade Find the Best VPN Today's Posts

Adapting Phex (private networks) Private networks, modified versions and similar


Reply
 
LinkBack Thread Tools Display Modes
  #11 (permalink)  
Old May 30th, 2008
Devotee
 
Join Date: May 8th, 2008
Posts: 23
uchelong is flying high
Default

the version of 3.2.0.102 does not have the problem, but the version 3.2.0.103 does.
Reply With Quote
  #12 (permalink)  
Old May 30th, 2008
Devotee
 
Join Date: May 8th, 2008
Posts: 23
uchelong is flying high
Default I found it

Hi, gregork:
I resolved it. I think it invokes the method too earlier than servent is loaded or made successfully. Consequently, setForcedHostIp method is invoked too early to get a Servent instance. I am not sure when the Servent instance sets up.
Reply With Quote
  #13 (permalink)  
Old May 30th, 2008
Devotee
 
Join Date: May 8th, 2008
Posts: 23
uchelong is flying high
Default

Hi, gregork:
I understood it in total. Servent has a object of Server that must create a LocalHostAddress object or instance that is going to call setForedHostIp, but the setForedHostIp needs a static servent instance. However this instance of Servent isn't set up yet because of the front reason. Recursion enters a dead cycle.
Reply With Quote
  #14 (permalink)  
Old May 30th, 2008
Phex Developer
 
Join Date: May 9th, 2001
Location: Stuttgart, Germany
Posts: 988
GregorK is flying high
Default

Great catch, thank you!!
I tried to fix the problem in SVN. Can you verify if it works for you?

BTW: there is actually not really a reason to set a forced IP. Phex is pretty good at detecting your public IP once you are connected to the network. There are only very few special cases where it makes sense to set the forced IP.
__________________
Reply With Quote
  #15 (permalink)  
Old June 2nd, 2008
Devotee
 
Join Date: May 8th, 2008
Posts: 23
uchelong is flying high
Default

public Server()
{
hasConnectedIncomming = ConnectionPrefs.HasConnectedIncomming.get().boolea nValue();
lastInConnectionTime = -1;
isRunning = false;

/** localAddress = new LocalServentAddress( this );

if ( ProxyPrefs.ForcedIp.get().length() > 0)
{
IpAddress ip = new IpAddress(
AddressUtils.parseIP( ProxyPrefs.ForcedIp.get() ) );
localAddress.setForcedHostIP( ip );
}
*/
} public Server()
{
hasConnectedIncomming = ConnectionPrefs.HasConnectedIncomming.get().boolea nValue();
lastInConnectionTime = -1;
isRunning = false;

/** localAddress = new LocalServentAddress( this );

if ( ProxyPrefs.ForcedIp.get().length() > 0)
{
IpAddress ip = new IpAddress(
AddressUtils.parseIP( ProxyPrefs.ForcedIp.get() ) );
localAddress.setForcedHostIP( ip );
}
*/
}

private void setupLocalAddress()
{
localAddress =new LocalServentAddress(this);
if ( ProxyPrefs.ForcedIp.get().length() > 0)
{
IpAddress ip = new IpAddress(
AddressUtils.parseIP( ProxyPrefs.ForcedIp.get() ) );
localAddress.setForcedHostIP( ip );
}

}
public synchronized void startup() throws IOException
{
setupLocalAddress();
if (isRunning)
{
return;
}
NLogger.debug( Server.class, "Starting listener");
isRunning = true;

firewallCheckTimer = new FirewallCheckTimer();
Environment.getInstance().scheduleTimerTask( firewallCheckTimer,
FirewallCheckTimer.TIMER_PERIOD,
FirewallCheckTimer.TIMER_PERIOD );

bind( NetworkPrefs.ListeningPort.get().intValue() );
// localAddress = new LocalServentAddress( this );
ThreadPool.getInstance().addJob(this,
"IncommingListener-" + Integer.toHexString(hashCode()));
}

private void setupLocalAddress()
{
localAddress =new LocalServentAddress(this);
if ( ProxyPrefs.ForcedIp.get().length() > 0)
{
IpAddress ip = new IpAddress(
AddressUtils.parseIP( ProxyPrefs.ForcedIp.get() ) );
localAddress.setForcedHostIP( ip );
}

}
public synchronized void startup() throws IOException
{
setupLocalAddress();
if (isRunning)
{
return;
}
NLogger.debug( Server.class, "Starting listener");
isRunning = true;

firewallCheckTimer = new FirewallCheckTimer(); public Server()
{
hasConnectedIncomming = ConnectionPrefs.HasConnectedIncomming.get().boolea nValue();
lastInConnectionTime = -1;
isRunning = false;

/** localAddress = new LocalServentAddress( this );

if ( ProxyPrefs.ForcedIp.get().length() > 0)
{
IpAddress ip = new IpAddress(
AddressUtils.parseIP( ProxyPrefs.ForcedIp.get() ) );
localAddress.setForcedHostIP( ip );
}
*/
}

private void setupLocalAddress()
{
localAddress =new LocalServentAddress(this);
if ( ProxyPrefs.ForcedIp.get().length() > 0)
{
IpAddress ip = new IpAddress(
AddressUtils.parseIP( ProxyPrefs.ForcedIp.get() ) );
localAddress.setForcedHostIP( ip );
}

}
public synchronized void startup() throws IOException
{
setupLocalAddress();
if (isRunning)
{
return;
}
NLogger.debug( Server.class, "Starting listener");
isRunning = true;

firewallCheckTimer = new FirewallCheckTimer();
Environment.getInstance().scheduleTimerTask( firewallCheckTimer,
FirewallCheckTimer.TIMER_PERIOD,
FirewallCheckTimer.TIMER_PERIOD );

bind( NetworkPrefs.ListeningPort.get().intValue() );
// localAddress = new LocalServentAddress( this );
ThreadPool.getInstance().addJob(this,
"IncommingListener-" + Integer.toHexString(hashCode()));
}
Environment.getInstance().scheduleTimerTask( firewallCheckTimer,
FirewallCheckTimer.TIMER_PERIOD,
FirewallCheckTimer.TIMER_PERIOD );

bind( NetworkPrefs.ListeningPort.get().intValue() );
// localAddress = new LocalServentAddress( this );
ThreadPool.getInstance().addJob(this,
"IncommingListener-" + Integer.toHexString(hashCode()));
}

I was just moving the setupLocalAddress method into startup.
Actually, your phex is very good and helpful to me. I was a c++ programmer before and new of java programming. So I should say "thank you" to you.
Reply With Quote
  #16 (permalink)  
Old June 2nd, 2008
Phex Developer
 
Join Date: May 9th, 2001
Location: Stuttgart, Germany
Posts: 988
GregorK is flying high
Default

Yes moving the method into startup would work too.
I liked get ride of the Servent.getInstance() calls. They are just a workaround to keep the code running while I was doing a lot restructuring over the last weeks. Thats why I was handing the objects instances through in my solution.
But both things should work...

If you like Phex you are also very welcome to help out with coding. So if you like to work on anything or you have some improvements just tell me.
__________________
Reply With Quote
  #17 (permalink)  
Old June 3rd, 2008
Devotee
 
Join Date: May 8th, 2008
Posts: 23
uchelong is flying high
Default

Yes, I like to do coding things. I try to learn your phex gui part, it is so overwhelming to me. I don't know how you code it. for example treetable has too many technical details. I don't know what they do.
Reply With Quote
  #18 (permalink)  
Old June 3rd, 2008
Devotee
 
Join Date: May 8th, 2008
Posts: 23
uchelong is flying high
Default

gregork:
I am trying to understand them at my best. If you give me some kind of roadmap to learn them, I will be grateful for that. Anyway, thanks beforehand.
Reply With Quote
  #19 (permalink)  
Old June 4th, 2008
Phex Developer
 
Join Date: May 9th, 2001
Location: Stuttgart, Germany
Posts: 988
GregorK is flying high
Default

Actually I don't know the details how TreeTable works myself. I just added the class from the SwingX project https://swingx.dev.java.net/ if I remember correct and used the functionality.

As a roadmap I would just suggest you to think of something easy to improve on the GUI. There are a few things on the Wishlist in the Wiki
http://www.phex.org/wiki/index.php/Wishlist

or in the Phex Bug Tracker, like this one:
SourceForge.net: Detail: 1810708 - clicking enter in result monitor should start passive search

I can also assign you one which should be good to start with.

As the next step I would suggest to start from the corresponding tab or dialog class to check where to integrate it. Most GUI part is not so difficult like the tables.

Most code in Phex uses JGoodies Forms to layout the components. So I would suggest you get familiar with it. But you can also use standard JDK LayoutManagers when you design a whole new panel and you feel more familiar with it.

So instead of trying to understand the whole GUI, which is just not possible in short time I would suggest you to start just with the parts where you want to change things. If you feel unsure where to look you can just ask or send me code to review I can help you get back on track.

Gregor
__________________
Reply With Quote
  #20 (permalink)  
Old June 5th, 2008
Devotee
 
Join Date: May 8th, 2008
Posts: 23
uchelong is flying high
Default

Hi, gregork:
I am so glad to join you. I have understood some kinds of layouts, and after reading the program, I feel it similar with JDK LayoutManagers. That is not so hard.
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 06:38 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.