kirk 0.1.7-java → 0.1.8-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,25 @@
1
1
  module Kirk
2
2
  class Client
3
- # stuff
3
+ import org.eclipse.jetty.client.HttpClient
4
+ import org.eclipse.jetty.client.HttpExchange
5
+ import java.net.InetSocketAddress
6
+ import java.util.concurrent.LinkedBlockingQueue
7
+ import org.eclipse.jetty.client.ContentExchange
8
+ import java.util.concurrent.AbstractExecutorService
9
+ import java.util.concurrent.TimeUnit
10
+ import java.util.concurrent.ThreadPoolExecutor
11
+ import java.util.concurrent.ExecutorCompletionService
12
+
13
+ def self.session
14
+ Session.new(&Proc.new)
15
+ end
16
+
17
+ private
4
18
  end
5
19
  end
20
+
21
+ require 'kirk/client/session'
22
+ require 'kirk/client/response'
23
+ require 'kirk/client/request'
24
+ require 'kirk/client/connection'
25
+ require 'kirk/client/exchange'
@@ -0,0 +1,18 @@
1
+ class Kirk::Client
2
+ class Connection
3
+ attr_reader :request
4
+
5
+ def initialize
6
+ @request = nil
7
+ @writing = false
8
+ @client = HttpClient.new
9
+ @client.set_connector_type(HttpClient::CONNECTOR_SELECT_CHANNEL);
10
+ @client.start
11
+ end
12
+
13
+ def process(request)
14
+ exchange = Exchange.from_request(request)
15
+ @client.send(exchange)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,33 @@
1
+ class Kirk::Client
2
+ class Exchange < ContentExchange
3
+ include java.util.concurrent.Callable
4
+
5
+ def initialize(session, handler)
6
+ @handler = handler
7
+ @session = session
8
+ super()
9
+ end
10
+
11
+ def onException(ex)
12
+ puts ex.inspect
13
+ end
14
+
15
+ def onResponseComplete
16
+ @session.queue.offer(response)
17
+ @handler.on_response_complete(response) if @handler
18
+ end
19
+
20
+ def response
21
+ @response = begin
22
+ Response.new(get_response_content, get_response_status)
23
+ end
24
+ end
25
+
26
+ def self.from_request(request)
27
+ exchange = new(request.session, request.handler)
28
+ exchange.set_method(request.method)
29
+ exchange.set_url(request.url)
30
+ exchange
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,12 @@
1
+ class Kirk::Client
2
+ class Request
3
+ attr_reader :method, :url, :handler, :session
4
+
5
+ def initialize(session, method, url, handler, headers)
6
+ @session = session
7
+ @method = method.to_s.upcase
8
+ @url = url
9
+ @handler = handler
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ class Kirk::Client
2
+ class Response
3
+ attr_reader :status, :content
4
+
5
+ def initialize(content, status)
6
+ @content = content
7
+ @status = status
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,40 @@
1
+ class Kirk::Client
2
+ class Session
3
+
4
+ attr_reader :responses, :queue
5
+
6
+ def initialize
7
+ @queue = LinkedBlockingQueue.new
8
+ @executor = ThreadPoolExecutor.new(thread_count, thread_count, 0, TimeUnit::SECONDS, @queue)
9
+ @connection = Connection.new
10
+ @requests_count = 0
11
+ @responses = []
12
+ yield(self)
13
+
14
+ get_responses
15
+ end
16
+
17
+ def request(method, url, handler = nil, headers = nil)
18
+ request = Request.new(self, method, url, handler, headers)
19
+ yield request if block_given?
20
+ queue_request(request)
21
+ request
22
+ end
23
+
24
+ def thread_count
25
+ 3
26
+ end
27
+
28
+ def queue_request(request)
29
+ @connection.process(request)
30
+ @requests_count += 1
31
+ end
32
+
33
+ def get_responses
34
+ while @requests_count > 0
35
+ @responses << @queue.take
36
+ @requests_count -= 1
37
+ end
38
+ end
39
+ end
40
+ end
@@ -135,7 +135,7 @@ module Kirk
135
135
 
136
136
  # Set the new buffer limit to the amount that is going
137
137
  # to be read
138
- @buffer.position(@read).limit(@read + missing)
138
+ @buffer.limit(@read + missing).position(@read)
139
139
 
140
140
  # Read into the buffer
141
141
  len = @io.read(@buffer)
@@ -1,4 +1,4 @@
1
1
  module Kirk
2
2
  NAME = "kirk".freeze
3
- VERSION = "0.1.7".freeze
3
+ VERSION = "0.1.8".freeze
4
4
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: kirk
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.7
5
+ version: 0.1.8
6
6
  platform: java
7
7
  authors:
8
8
  - Carl Lerche
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-14 00:00:00 -08:00
13
+ date: 2011-02-17 00:00:00 -08:00
14
14
  default_executable: kirk
15
15
  dependencies: []
16
16
 
@@ -43,6 +43,11 @@ files:
43
43
  - lib/kirk/applications/hot_deployable.rb
44
44
  - lib/kirk/applications/rack.rb
45
45
  - lib/kirk/applications/redeploy_client.rb
46
+ - lib/kirk/client/connection.rb
47
+ - lib/kirk/client/exchange.rb
48
+ - lib/kirk/client/request.rb
49
+ - lib/kirk/client/response.rb
50
+ - lib/kirk/client/session.rb
46
51
  - lib/rack/handler/kirk.rb
47
52
  - lib/kirk/native.jar
48
53
  - lib/kirk/jetty/jetty-client-7.2.2.v20101205.jar
@@ -75,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
80
  requirements: []
76
81
 
77
82
  rubyforge_project: kirk
78
- rubygems_version: 1.5.0
83
+ rubygems_version: 1.5.1
79
84
  signing_key:
80
85
  specification_version: 3
81
86
  summary: A JRuby Rack Server Based on Jetty