Rather than making all private requests visible globally I think we should have
3 different kinds of requests:
(1) strictly private
(2) private, but globally monitorable
(3) truely global
(1) and (3) we already have, (2) could be implemented by extending ClientGet
like:
...
Global=false
GlobalMonitor=true
...
so that
!Global && !GlobalMonitor => (1)
!Global && GlobalMonitor => (2)
Global && GlobalMonitor => (3)
Global && !GlobalMonitor => (3) or Protocol Error
Kind (2) would be basically the same as private requests, but
SimpleProgress/DataFound/GetFailed would also show up in the global watch list.
For kinds (1) and (2) the application that issued the request is responsible
for dealing with it when it succeeds or fails, whereas kind (3) indicates that
the issuing application doesn't want to be bothered by the request anymore.
(1) and (2) would always show up on a private ListPersistentRequests.
(2) and (3) would also show up for other parties if they WatchGlobal.
Examples of use:
(1) Frost message up/download. There is no use to see those in the global queue.
(2) Any kind of private download that should be displayable (but not
modifyable) by other apps. For example Frost downloads if Frost is configured
to handle its downloads itself.
(3) Fire-and-forget requests. Eg Frost downloads if Frost is configured to let
other apps handle downloads.
Only dealing with kind (3) in conjunction with a non-local node is problematic.
We need user intervention once it is done.
I suggest the following (ClientB being a central monitoring app, like Fuqid):
ClientA issues a ClientGet{Global=true;ReturnType=direct} and forgets about the
request.
ClientB monitors and displays the global queue. As soon as it sees a DataFound
it alerts the user (eg. by marking the file). (Data still stays on the node)
The user then selects the file and chooses to save it on his local PC.
ClientB sends a GetData(*) message to the node; the node will reply with
AllData. The data still does not get deleted from the node.
Now the user can choose to keep or remove the request. Upon removing
(RemovePersistentRequest) the node deletes the data.
(he could also switch to another PC, fire up a central monitoring app there,
and save it there too/instead)
(*)(Generally, AllData should only be sent by the node in reply to a (not yet
existing) "GetData" message, rather than automatically - at least for global
requests)
Preferably all clients should detect (or let the user configure) if the node is
local or not.
Local nodes are unproblematic, the client can always use ReturnType=disk. For
non-local nodes they would rather use ReturnType=direct.
That way even a completely split scenario is possible, like machine A running
Fuqid, machine B Frost and machine C the node.
mxbee
PS:
I really don't mind the non-bundling of Fuqid, actually I prefer it that way -
with bundled applications many users just forget to watch out for updates.
On Wed, 29 Mar 2006 00:33:46 +0000 (UTC)
Matthew Toseland <toad at amphibian.dyndns.org> wrote:
> I'm sorry about not including FUQID in 0.7. I had planned to; Ian thinks
> it's a bad idea since it's not cross platform.
>
> We need to sort out this issue with the global queue. Is it useful for
> apps to queue stuff to the global queue *which FUQID can watch, but
> cannot usefully remove* ? By "cannot usefully remove", I mean that the
> client app which queued it must deal with it because it cannot be
> returned to a disk file. The alternative is that Frost et al simply
> queue stuff to their own queues rather than the global queue. Another
> option would be the ability to watch larger or more stubborn files on
> all local queues in addition to the global queue... this might make a
> bit more sense; the user could cancel old requests which he will never
> use, and see the progress of files, but the primary responsibility rests
> on the submitting app...
>
> What is your view on this?
> --
> Matthew J Toseland - toad at amphibian.dyndns.org
> Freenet Project Official Codemonkey - http://freenetproject.org/
> ICTHUS - Nothing is impossible. Our Boss says so.
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 168 bytes
Desc: not available
URL:
<https://emu.freenetproject.org/pipermail/tech/attachments/20060331/fe1f9af6/attachment.pgp>