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 @@

Methods

- connect   - disconnect   - generate_keypair   - get   - load_request   - new   - put   - putdir   - request_status   + connect   + disconnect   + generate_keypair   + get   + load_request   + new   + put   + putdir   + request_status  
@@ -210,12 +210,12 @@

Public Class methods

-
- +
+ @@ -249,12 +249,12 @@

Public Instance methods

-
- +
+ @@ -270,12 +270,12 @@
-
- +
+ @@ -288,13 +288,13 @@
- - -
- +
+ @@ -387,12 +387,12 @@
- - -
- +
+ Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000018.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000018.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Client.src/M000018.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,15 +5,22 @@ - load_request (Freenet::FCP::Client) + new (Freenet::FCP::Client) -
# 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
       end
Modified: 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

- callback   + callback   + callback?   lock   + locked?   new   - reply=   + reply=   + try_lock   unlock   - wait_for_response   + wait_for_response  
@@ -227,12 +230,12 @@

Public Instance methods

-
- +
+ @@ -244,13 +247,27 @@
+
+ + + + +
+
+
+
@@ -261,12 +278,26 @@
-
- +
+ + +
+
+
+ +
+ + + @@ -278,6 +309,20 @@
+
+ + + + +
+
+
+
@@ -295,12 +340,12 @@
-
- +
+ Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000009.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000009.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000009.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -24,6 +24,7 @@ @callback = callback @mutex = Mutex.new @load_only = false + @this_thread = nil end \ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000010.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000010.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000010.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -10,7 +10,11 @@ -
# File freenet/fcp/message.rb, line 39
-      def lock; @mutex.lock; end
+
# File freenet/fcp/message.rb, line 40
+      def lock(delay = 5)
+        until @mutex.try_lock
+          sleep(delay)
+        end
+      end
\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000011.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000011.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000011.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -10,7 +10,9 @@ -
# File freenet/fcp/message.rb, line 42
-      def unlock; @mutex.unlock; end
+
# File freenet/fcp/message.rb, line 47
+      def unlock
+        @mutex.unlock
+      end
\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000012.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000012.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000012.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,16 +5,14 @@ - callback (Freenet::FCP::Message) + locked? (Freenet::FCP::Message) -
# File freenet/fcp/message.rb, line 45
-      def callback(status)
-        @callback.call(status, self, @response) unless @callback.nil?
-      rescue => e
-        puts "ERROR: Exception in callback: #{e}\n#{e.backtrace.join("\n")}"
+  
# File freenet/fcp/message.rb, line 51
+      def locked?
+        @mutex.locked?
       end
\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000013.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000013.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000013.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,16 +5,14 @@ - reply= (Freenet::FCP::Message) + try_lock (Freenet::FCP::Message) -
# File freenet/fcp/message.rb, line 52
-      def reply=(response)
-        lock
-        @response = response
-        unlock
+  
# File freenet/fcp/message.rb, line 55
+      def try_lock
+        @mutex.try_lock
       end
\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000014.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000014.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000014.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,19 +5,16 @@ - wait_for_response (Freenet::FCP::Message) + callback (Freenet::FCP::Message)
# File freenet/fcp/message.rb, line 60
-      def wait_for_response
-        until @response
-          sleep(0.5)
-          lock
-          unlock
-          Thread.pass
-        end
+      def callback(status)
+        @callback.call(status, self, @response) unless @callback.nil?
+      rescue => e
+        puts "ERROR: Exception in callback: #{e}\n#{e.backtrace.join("\n")}"
       end
\ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000015.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000015.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000015.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,18 @@ + + + + + + callback? (Freenet::FCP::Message) + + + + +
# File freenet/fcp/message.rb, line 66
+      def callback?
+        @callback.nil? == false
+      end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000016.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000016.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000016.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,21 @@ + + + + + + reply= (Freenet::FCP::Message) + + + + +
# File freenet/fcp/message.rb, line 71
+      def reply=(response)
+        lock
+        @response = response
+        unlock
+        @this_thread.run if @this_thread
+      end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000017.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000017.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/Message.src/M000017.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,19 @@ + + + + + + wait_for_response (Freenet::FCP::Message) + + + + +
# File freenet/fcp/message.rb, line 80
+      def wait_for_response
+        @this_thread = Thread.current
+        Thread.stop
+      end
+ + \ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -92,7 +92,7 @@

Methods

- new   + new  
@@ -142,12 +142,12 @@

Public Class methods

-
- +
+ Added: trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.src/M000027.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.src/M000027.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/FCP/RequestFailed.src/M000027.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,21 @@ + + + + + + new (Freenet::FCP::RequestFailed) + + + + +
# File freenet/fcp/exceptions.rb, line 16
+      def initialize(original_message)
+        @code = original_message.items['Code']
+        @description = original_message.items['CodeDescription']
+        @extra = original_message.items['ExtraDescription']
+        @fatal = original_message.items['Fatal']
+      end
+ + \ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -86,13 +86,17 @@

Methods

- connect   - generate_key   - insert_file   - insert_site   - load   - new   - save   + add_site   + connect   + disconnect   + generate_key   + insert_file   + insert_site   + load_sites   + new   + process_site   + save_sites   + to_hash  
@@ -104,20 +108,53 @@
+
+

Constants

+
+ + + + + + +
STORE_PATH=File.expand_path("~/.rubyFreenetSites")
+
+
+

Attributes

+ + + + + + + + + + + + + + + + + + + + @@ -132,13 +169,13 @@

Public Class methods

-
- +
+ @@ -146,13 +183,13 @@
-
- +
+ @@ -160,14 +197,42 @@
+
+ + + + +
+
+
+ +
+ + + + +
+
+
+

Public Instance methods

-
- +
+ @@ -176,12 +241,26 @@
-
- + + +
+ + + @@ -190,12 +269,12 @@
- -
- +
+
+

+Insert a whole site from disk +

-
- +
+ @@ -248,7 +330,21 @@
+
+ + + +
+
+
+ +
Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000033.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000033.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000033.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,14 +5,17 @@ - generate_key (Freenet::Site) + add_site (Freenet::Site) -
# File rsite/rsite.rb, line 21
-    def generate_key
-      @keys = @client.generate_keypair
+  
# File rsite/rsite.rb, line 9
+    def self.add_site(site)
+      existing_sites = load_sites
+      site = site.to_hash if site.respond_to? :to_hash
+      existing_sites << site
+      save_sites(existing_sites)
     end
\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000034.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000034.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000034.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,13 +5,25 @@ - insert_site (Freenet::Site) + save_sites (Freenet::Site) -
# File rsite/rsite.rb, line 25
-    def insert_site
+  
# File rsite/rsite.rb, line 16
+    def self.save_sites(sites)
+      sites = sites.collect do |s|
+        if s.respond_to? :to_hash
+          s.to_hash 
+        else
+          s
+        end
+      end
+      File.open(STORE_PATH, 'w') do |f|
+        f.flock(File::LOCK_EX)
+        YAML.dump(sites, f)
+        f.flock(File::LOCK_UN)
+      end
     end
\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000035.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000035.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000035.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,29 +5,31 @@ - insert_file (Freenet::Site) + load_sites (Freenet::Site) -
# File rsite/rsite.rb, line 38
-    def insert_file(path, type = nil, site=nil)
-      uri = ''
-      type ||= @type
-      case type
-      when 'CHK' then uri = 'CHK@'
+  
# File rsite/rsite.rb, line 31
+    def self.load_sites
+      if File.exists? STORE_PATH
+        sites = []
+        File.open(STORE_PATH) do |f|
+          f.flock(File::LOCK_EX)
+          sites = YAML.load(f)
+          f.flock(File::LOCK_UN)
+        end
+        sites ||= []
+        sites.collect do |s|
+          site = Site.new(s[:type], s[:dir], s[:name])
+          site.keys = s[:keys] if s[:keys]
+          site.version = s[:version]
+          site.last_update = s[:last_update]
+          site
+        end
       else
-        raise SiteError.new('Invalid key') unless site
-        uri = "#{@type}@#{site}"
+        []
       end
-      @client.put(uri, nil, true, 'UploadFrom'=>'disk','Filename'=>path) do |status, message, response|
-      when :uri_generated
-        puts "URI created: #{response.items['URI']}"
-      when :success
-        puts "File inserted successfully"
-      when :failed
-        puts "File insertion failed!"
-      end
     end
\ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000036.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000036.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000036.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,14 +5,16 @@ - save (Freenet::Site) + new (Freenet::Site) -
# File rsite/rsite.rb, line 57
-    def save(file)
-      File.open(file, 'w') {|f| f.write(Marshal.dump(self))}
+  
# File rsite/rsite.rb, line 54
+    def initialize(type, path, name)
+      raise SiteError.new("Invalid type: #{type}") unless ['USK','SSK','CHK','KSK'].include? type
+      @path, @type, @name = path, type, name
+      @version = ''
     end
\ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000037.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000037.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000037.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,18 @@ + + + + + + connect (Freenet::Site) + + + + +
# File rsite/rsite.rb, line 60
+    def connect
+      @client = Freenet::FCP::Client.new()
+    end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000038.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000038.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000038.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,18 @@ + + + + + + disconnect (Freenet::Site) + + + + +
# File rsite/rsite.rb, line 64
+    def disconnect
+      @client.disconnect
+    end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000039.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000039.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000039.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,18 @@ + + + + + + generate_key (Freenet::Site) + + + + +
# File rsite/rsite.rb, line 68
+    def generate_key
+      @keys = @client.generate_keypair
+    end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000040.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000040.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000040.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,18 @@ + + + + + + process_site (Freenet::Site) + + + + +
# File rsite/rsite.rb, line 72
+    def process_site
+      
+    end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000041.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000041.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000041.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,30 @@ + + + + + + insert_site (Freenet::Site) + + + + +
# File rsite/rsite.rb, line 77
+    def insert_site(path = nil)
+      path ||= @path
+      case @type
+      when 'CHK', 'KSK' then raise SiteError.new('Invalid key type for site insert')
+      end
+      generate_key unless @keys
+      @uri ||= Freenet::URI.new(@keys[0])
+      @uri.type = @type
+      @uri.path = "/#{@name}"
+      @uri.version ||= @version
+      @uri.version += 1
+      @last_update = File.mtime(path)
+      uri = @client.putdir(@uri, path)
+      uri
+    end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000042.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000042.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000042.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,35 @@ + + + + + + insert_file (Freenet::Site) + + + + +
# File rsite/rsite.rb, line 103
+    def insert_file(path, type = nil, site=nil)
+      uri = ''
+      type ||= @type
+      case type
+      when 'CHK' then uri = 'CHK@'
+      else
+        raise SiteError.new('Invalid key') unless site
+        uri = "#{@type}@#{site}"
+      end
+      @client.put(uri, nil, true, 'UploadFrom'=>'disk','Filename'=>path) do |status, message, response|
+        case status
+        when :uri_generated
+          puts "URI created: #{response.items['URI']}"
+        when :success
+          puts "File inserted successfully"
+        when :failed
+          puts "File insertion failed!"
+        end
+      end
+    end
+ + \ No newline at end of file Added: trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000043.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000043.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/Site.src/M000043.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -0,0 +1,23 @@ + + + + + + to_hash (Freenet::Site) + + + + +
# File rsite/rsite.rb, line 124
+    def to_hash
+      {:type=>@type,
+       :name=>@name,
+       :version=>@version,
+       :dir=>@path,
+       :keys=>@keys,
+       :last_update=>@last_update}
+    end
+ + \ No newline at end of file Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/URI.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/URI.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/URI.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -97,11 +97,11 @@

Methods

- <=>   - merge   - new   - root?   - uri   + <=>   + merge   + new   + root?   + uri  
@@ -129,20 +129,35 @@
client [RW] 
keys [RW] 
last_update [RW] 
name  [R] 
name [RW] 
version  [RW] 
+ + + + + - + - + + + + + + - + + + + + +
name [RW] 
path [R]  [RW] 
site [R]  [RW] 
type [RW] 
uri [R]  [RW] 
version [RW] 
@@ -153,13 +168,13 @@

Public Class methods

-
- +
+ @@ -179,12 +194,12 @@

Public Instance methods

-
- +
+ @@ -193,12 +208,12 @@
-
- +
+ @@ -215,12 +230,12 @@
-
- +
+ @@ -234,7 +249,7 @@
  • KSKs and CHKs only have one file, so always the base
  • -
  • SSKs have a ‘base’, eg SSK@…/mysite/ +
  • SSKs have a ‘base’, eg SSK@…/mysite-2/
  • USKs start with /sitename and end with /revision or -revision, though the @@ -248,12 +263,12 @@
  • -
    - +
    + Modified: trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000028.html =================================================================== --- trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000028.html 2006-06-10 22:12:33 UTC (rev 9142) +++ trunk/apps/rubyFreenet/doc/classes/Freenet/URI.src/M000028.html 2006-06-11 03:36:17 UTC (rev 9143) @@ -5,21 +5,48 @@ - root? (Freenet::URI) + new (Freenet::URI) -
    # File freenet/uri.rb, line 64
    -    def root?
    -      case @site
    -      when /^CHK/ then