Hello everyone,

I have about two weeks left before the mid term evaluations for this
year's GSoC. I must admit that though I had promised to have a buggy
version of Packet Transports ready and running by midterm, this has
been delayed due to a few reasons.

The past one or two weeks has been spent mainly addressing two new
issues/features-

1. We were not happy with transport plugins registering an implemented
interface and fred using it. This is because-

 a) We don't want to run a transport until the user wants to enable it
in the settings page. When the user loads a new plugin it is enabled
by default. But the user has the option to disable it (for e.g. a
particular mode - opennet/darknet). Or we might have a plugin that
does multiple tasks. So to handle unnecessary usage, we decided that
fred chooses to create an instance of a transport whenever the user
wants to use that transport. Also we want to be able to restart
transports easily.

 b) To overcome this and other issues (like an address is needed by a
transport for it to bind) we need to use the constructor itself.

 c) Thus we will now use factory classes. A plugin registers on fred
with a factory class that can create an instance of the transport
whenever it wants to. This will make things easier for the transport
plugin developer.

 d) A TransportManagerConfig class will now store the bind address of
all transports. And the TransportManager will use this to load
transports from the plugin.

I have made the necessary changes to incorporate this factory class.

2. I began working on this project under the assumption that I would
be dealing with IP based transports only. But after discussing on
#freenet-dev (apologies) we have decided that it is best to work on a
more generic version which can support even abstract transports.

So for e.g. a skype based transport plugin would ask fred for an
account name to connect to. Our noderef could include a skype account
name too.

The major hurdle to overcome is the usage of the Peer object which is
not sufficiently generic to support such features. So I am working to
develop a design that will work with a PluginAddress interface that
can be implemented by a plugin the way it wants.



toad is currently reviewing my code. The basic design that I have
created seems to be fine according to him. But I really need to start
working more on the concrete stuff from now on. I believe most design
ideas have been covered.

On the bright side for me, most of the design has been developed to
support streams (TCP) too. So when I get to that part, it must be much
easier to complete the tasks.

Regards,
Chetan Hosmani

Reply via email to