From nextgens at freenetproject.org Sat Jun 10 17:13:51 2006 From: nextgens at freenetproject.org (Florent =?iso-8859-1?Q?Daigni=E8re_=28NextGen$=29?=) Date: Sat, 10 Jun 2006 19:13:51 +0200 Subject: [Rubyfreenet] Testing Message-ID: <20060610171350.GE5620@freenetproject.org> Testing the list. From sitharus at freenetproject.org Sun Jun 11 03:37:51 2006 From: sitharus at freenetproject.org (sitharus at freenetproject.org) Date: Sun, 11 Jun 2006 03:37:51 +0000 (UTC) Subject: [Rubyfreenet] r9143 - in trunk/apps/rubyFreenet: . doc doc/classes doc/classes/Freenet doc/classes/Freenet/FCP doc/classes/Freenet/FCP/Client.src doc/classes/Freenet/FCP/Message.src doc/classes/Freenet/FCP/RequestFailed.src doc/classes/Freenet/Site.src doc/classes/Freenet/URI.src doc/classes/FreenetPage.src doc/classes/IndexR.src doc/files doc/files/freenet doc/files/freenet/fcp doc/files/indexr doc/files/rsite freenet freenet/fcp indexr Message-ID: <20060611033751.BE33B9C7E4@emu.freenetproject.org> Author: sitharus Date: 2006-06-11 03:36:17 +0000 (Sun, 11 Jun 2006) New Revision: 9143 Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000024.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000025.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000026.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000015.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000016.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000017.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.src/M000027.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000037.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000038.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000039.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000040.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000041.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000042.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000043.html trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000030.html trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000031.html trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000032.html trunk/apps/rubyFreenet/doc/files/indexr/indexr_rb.html trunk/apps/rubyFreenet/doc/files/rsite/putsite_rb.html Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000018.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000019.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000020.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000021.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000022.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000023.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000009.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000010.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000011.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000012.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000013.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000014.html trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000033.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000034.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000035.html trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000036.html trunk/apps/rubyFreenet/doc/classes/Freenet/URI.html trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000028.html trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000029.html trunk/apps/rubyFreenet/doc/classes/FreenetPage.html trunk/apps/rubyFreenet/doc/classes/FreenetPage.src/M000001.html trunk/apps/rubyFreenet/doc/classes/FreenetPage.src/M000002.html trunk/apps/rubyFreenet/doc/classes/FreenetPage.src/M000003.html trunk/apps/rubyFreenet/doc/classes/FreenetPage.src/M000004.html trunk/apps/rubyFreenet/doc/classes/FreenetPageError.html trunk/apps/rubyFreenet/doc/classes/IndexR.html trunk/apps/rubyFreenet/doc/classes/IndexR.src/M000005.html trunk/apps/rubyFreenet/doc/classes/IndexR.src/M000006.html trunk/apps/rubyFreenet/doc/classes/IndexR.src/M000007.html trunk/apps/rubyFreenet/doc/classes/IndexR.src/M000008.html trunk/apps/rubyFreenet/doc/created.rid trunk/apps/rubyFreenet/doc/files/freenet/exceptions_rb.html trunk/apps/rubyFreenet/doc/files/freenet/fcp/client_rb.html trunk/apps/rubyFreenet/doc/files/freenet/fcp/exceptions_rb.html trunk/apps/rubyFreenet/doc/files/freenet/fcp/message_rb.html trunk/apps/rubyFreenet/doc/files/freenet/fcp_rb.html trunk/apps/rubyFreenet/doc/files/freenet/uri_rb.html trunk/apps/rubyFreenet/doc/files/freenet_rb.html trunk/apps/rubyFreenet/doc/files/rsite/rsite_rb.html trunk/apps/rubyFreenet/doc/fr_file_index.html trunk/apps/rubyFreenet/doc/fr_method_index.html trunk/apps/rubyFreenet/freenet.rb trunk/apps/rubyFreenet/freenet/fcp/client.rb trunk/apps/rubyFreenet/freenet/fcp/message.rb trunk/apps/rubyFreenet/freenet/uri.rb trunk/apps/rubyFreenet/indexr/indexr.rb Log: Made Freenet::URI more aware of URI structure, particularly USKs. Still far from perfect. Altered the Message/Client blocking behaviour so CPU usage is no longer 100%, any thread that calls Message#wait_for_response will now be stopped with Thread.stop rather than by attempting to acquire a lock. Some improvements to rsite management tools, but they're not really useful other than as examples. Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -173,15 +173,15 @@
# File freenet/fcp/client.rb, line 124 - def load_request(message) - message.load_only = true - @message_queue << message +# File freenet/fcp/client.rb, line 84 + def initialize(client_name=nil, server="127.0.0.1", port=9481, options={}) + @client_name = client_name || MD5.md5(Time.now.to_s) + @options, @server, @port = options, server, port + @messages = {} + @running = false + @lock = Mutex.new + @logger = Logger.new('FCPClientLog','daily') + @message_queue = Queue.new + connect + hello end\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000019.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000019.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000019.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,20 +5,22 @@ -generate_keypair (Freenet::FCP::Client) +connect (Freenet::FCP::Client) -# File freenet/fcp/client.rb, line 136 - def generate_keypair(async, &callback) - message = Message.new('GenerateSSK', nil, nil, callback) - send(message, async) - if async - message - else - [message.response.items['InsertURI'], message.response.items['RequestURI']] +# File freenet/fcp/client.rb, line 99 + def connect + @lock.synchronize do + log(INFO, "Connecting to #{@server}:#{@port}") + @socket = TCPSocket.open(@server, @port) + @running = true + @socket_thread = Thread.new {socket_thread} + log(DEBUG, "Running thread") end + rescue + raise FCPConnectionError.new('Connection failed') end\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000020.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000020.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000020.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,43 +5,18 @@ -get (Freenet::FCP::Client) +disconnect (Freenet::FCP::Client) -# File freenet/fcp/client.rb, line 174 - def get(uri, async=false, options=nil, &callback) - uri = uri.uri if uri.respond_to? :uri - async = true if callback - options = {'IgnoreDS'=>false, - 'DSOnly'=>false, - 'Verbosity'=>1, - 'ReturnType'=>'direct', - 'PriorityClass'=>1, - 'Persistence'=>'reboot', - 'Global'=>false}.merge(options || {}) - options['Persistence'] = 'connection' unless async - options['URI'] = uri - message = Message.new('ClientGet', nil, options, callback) - send(message, async) - if async - message - else - loop do - message.lock - case message.response.type - when 'AllData' - message.unlock - return message.response - when 'GetFailed' - message.unlock - raise RequestFailed.new(message.response) - else - message.unlock - end - end +# File freenet/fcp/client.rb, line 113 + def disconnect + log(INFO, 'Disconnecting') + @lock.synchronize do + @running = false end + @socket_thread.join if @socket_thread end\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000021.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000021.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000021.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,42 +5,15 @@ -put (Freenet::FCP::Client) +load_request (Freenet::FCP::Client) -# File freenet/fcp/client.rb, line 228 - def put(uri, data=nil, async=false, options=nil, &callback) - uri = uri.uri if uri.respond_to? :uri - async = true if callback - options = {'Metadata.ContentType' => 'application/octet-stream', - 'Verbosity' => 1, - 'MaxRetries' => 10, - 'Persistence' => 'reboot', - 'UploadFrom' => 'direct'}.merge(options || {}) - options['Persistence'] = 'connection' unless async - options['URI'] = uri - message = Message.new('ClientPut', data, options, callback) - message.content-type = options['Metadata.ContentType'] - send(message, async) - if async - message - else - loop do - message.lock - case message.response.type - when 'PutSuccessful' - message.unlock - return message.response.items['URI'] - when 'PutFailed' - message.unlock - raise RequestFailed.new(message.response) - else - message.unlock - end - end - end +# File freenet/fcp/client.rb, line 123 + def load_request(message) + message.load_only = true + @message_queue << message end\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000022.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000022.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000022.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,41 +5,20 @@ -putdir (Freenet::FCP::Client) +generate_keypair (Freenet::FCP::Client) -# File freenet/fcp/client.rb, line 262 - def putdir(uri, dir, async=false, options=nil, &callback) - uri = uri.uri if uri.respond_to? :uri - async = true if callback - options = {'Verbosity' => 1, - 'MaxRetries' => 10, - 'PriorityClass' => 3, - 'DefaultName' => 'index.html', - 'Filename' => dir.to_s - 'AllowUnreadableFiles' => 'true'}.merge(options || {}) - options['Persistence'] = 'connection' unless async - options['URI'] = uri - message = Message.new('ClientPutDiskDir', nil, options, callback) +# File freenet/fcp/client.rb, line 135 + def generate_keypair(async = false, &callback) + message = Message.new('GenerateSSK', nil, nil, callback) send(message, async) if async message else - loop do - message.lock - case message.response.type - when 'PutSuccessful' - message.unlock - return message.response.items['URI'] - when 'PutFailed' - message.unlock - raise RequestFailed.new(message.response) - else - message.unlock - end - end + message.wait_for_response + [message.response.items['InsertURI'], message.response.items['RequestURI']] end endModified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000023.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000023.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000023.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,16 +5,49 @@ -request_status (Freenet::FCP::Client) +get (Freenet::FCP::Client) -# File freenet/fcp/client.rb, line 297 - def request_status(identifier, global, async=false) - log(DEBUG, 'Requesting status') - message = Message.new('GetRequestStatus', nil, 'Identifier'=>identifier, 'Global'=>global) +# File freenet/fcp/client.rb, line 174 + def get(uri, async=false, options=nil, &callback) + uri = uri.uri if uri.respond_to? :uri + async = true if callback + options = {'IgnoreDS'=>false, + 'DSOnly'=>false, + 'Verbosity'=>1, + 'ReturnType'=>'direct', + 'PriorityClass'=>1, + 'Persistence'=>'reboot', + 'Global'=>false}.merge(options || {}) + options['Persistence'] = 'connection' unless async + options['URI'] = uri + message = Message.new('ClientGet', nil, options, callback) send(message, async) + if async + message + else + loop do + message.wait_for_response + puts "Got response: #{message.response.type}" + message.lock + case message.response.type + when 'AllData' + message.unlock + return message.response + when 'GetFailed','ProtocolError' + message.unlock + if message.response.items['Code'] == '27' + get(message.response.items['RedirectURI'], true, options) + else + raise RequestFailed.new(message.response) + end + else + message.unlock + end + end + end end\ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000024.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000024.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000024.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,47 @@ + + + + + +put (Freenet::FCP::Client) + + + + +# File freenet/fcp/client.rb, line 234 + def put(uri, data=nil, async=false, options=nil, &callback) + uri = uri.uri if uri.respond_to? :uri + async = true if callback + options = {'Metadata.ContentType' => 'application/octet-stream', + 'Verbosity' => 1, + 'MaxRetries' => 10, + 'Persistence' => 'reboot', + 'UploadFrom' => 'direct'}.merge(options || {}) + options['Persistence'] = 'connection' unless async + options['URI'] = uri + message = Message.new('ClientPut', data, options, callback) + message.content-type = options['Metadata.ContentType'] + send(message, async) + if async + message + else + loop do + message.wait_for_response + message.lock + case message.response.type + when 'PutSuccessful' + message.unlock + return message.response.items['URI'] + when 'PutFailed','ProtocolError' + message.unlock + raise RequestFailed.new(message.response) + else + message.unlock + end + end + end + end+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000025.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000025.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000025.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,47 @@ + + + + + +putdir (Freenet::FCP::Client) + + + + +# File freenet/fcp/client.rb, line 269 + def putdir(uri, dir, async=false, options=nil, &callback) + uri = uri.uri if uri.respond_to? :uri + async = true if callback + options = {'Verbosity' => 1, + 'MaxRetries' => 10, + 'PriorityClass' => 3, + 'DefaultName' => 'index.html', + 'Filename' => dir.to_s, + 'AllowUnreadableFiles' => 'true'}.merge(options || {}) + options['Persistence'] = 'connection' unless async + options['URI'] = uri + message = Message.new('ClientPutDiskDir', nil, options, callback) + send(message, async) + if async + message + else + loop do + message.wait_for_response + message.lock + case message.response.type + when 'PutSuccessful' + message.unlock + return message.response.items['URI'] + when 'PutFailed','ProtocolError' + message.unlock + raise RequestFailed.new(message.response) + else + message.unlock + end + end + end + end+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000026.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000026.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000026.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,21 @@ + + + + + +request_status (Freenet::FCP::Client) + + + + +# File freenet/fcp/client.rb, line 305 + def request_status(identifier, global, async=false) + log(DEBUG, 'Requesting status') + message = Message.new('GetRequestStatus', nil, 'Identifier'=>identifier, 'Global'=>global) + send(message, async) + message.wait_for_response + end+ + \ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -112,12 +112,15 @@Methods