itsi-server 0.2.16 → 0.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +3 -1
  3. data/exe/itsi +6 -1
  4. data/ext/itsi_acme/Cargo.toml +1 -1
  5. data/ext/itsi_scheduler/Cargo.toml +1 -1
  6. data/ext/itsi_server/Cargo.toml +3 -1
  7. data/ext/itsi_server/src/lib.rs +6 -1
  8. data/ext/itsi_server/src/ruby_types/itsi_body_proxy/mod.rs +2 -0
  9. data/ext/itsi_server/src/ruby_types/itsi_grpc_call.rs +4 -4
  10. data/ext/itsi_server/src/ruby_types/itsi_grpc_response_stream/mod.rs +14 -13
  11. data/ext/itsi_server/src/ruby_types/itsi_http_request.rs +64 -33
  12. data/ext/itsi_server/src/ruby_types/itsi_http_response.rs +151 -152
  13. data/ext/itsi_server/src/ruby_types/itsi_server/file_watcher.rs +6 -15
  14. data/ext/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +26 -5
  15. data/ext/itsi_server/src/ruby_types/itsi_server.rs +1 -1
  16. data/ext/itsi_server/src/server/binds/listener.rs +45 -7
  17. data/ext/itsi_server/src/server/frame_stream.rs +142 -0
  18. data/ext/itsi_server/src/server/http_message_types.rs +142 -9
  19. data/ext/itsi_server/src/server/io_stream.rs +28 -5
  20. data/ext/itsi_server/src/server/lifecycle_event.rs +1 -1
  21. data/ext/itsi_server/src/server/middleware_stack/middlewares/auth_basic.rs +2 -3
  22. data/ext/itsi_server/src/server/middleware_stack/middlewares/compression.rs +8 -10
  23. data/ext/itsi_server/src/server/middleware_stack/middlewares/cors.rs +2 -3
  24. data/ext/itsi_server/src/server/middleware_stack/middlewares/csp.rs +3 -3
  25. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response/default_responses.rs +54 -56
  26. data/ext/itsi_server/src/server/middleware_stack/middlewares/error_response.rs +5 -7
  27. data/ext/itsi_server/src/server/middleware_stack/middlewares/etag.rs +5 -5
  28. data/ext/itsi_server/src/server/middleware_stack/middlewares/proxy.rs +7 -10
  29. data/ext/itsi_server/src/server/middleware_stack/middlewares/redirect.rs +2 -3
  30. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_assets.rs +1 -2
  31. data/ext/itsi_server/src/server/middleware_stack/middlewares/static_response.rs +4 -6
  32. data/ext/itsi_server/src/server/mod.rs +1 -0
  33. data/ext/itsi_server/src/server/process_worker.rs +3 -4
  34. data/ext/itsi_server/src/server/serve_strategy/acceptor.rs +16 -12
  35. data/ext/itsi_server/src/server/serve_strategy/cluster_mode.rs +87 -31
  36. data/ext/itsi_server/src/server/serve_strategy/single_mode.rs +158 -142
  37. data/ext/itsi_server/src/server/signal.rs +37 -9
  38. data/ext/itsi_server/src/server/thread_worker.rs +84 -69
  39. data/ext/itsi_server/src/services/itsi_http_service.rs +43 -43
  40. data/ext/itsi_server/src/services/static_file_server.rs +28 -47
  41. data/lib/itsi/http_request.rb +31 -39
  42. data/lib/itsi/http_response.rb +5 -0
  43. data/lib/itsi/rack_env_pool.rb +59 -0
  44. data/lib/itsi/server/config/dsl.rb +5 -4
  45. data/lib/itsi/server/config/middleware/proxy.rb +1 -1
  46. data/lib/itsi/server/config/middleware/rackup_file.rb +2 -2
  47. data/lib/itsi/server/config/options/auto_reload_config.rb +6 -2
  48. data/lib/itsi/server/config/options/include.rb +5 -2
  49. data/lib/itsi/server/config/options/pipeline_flush.md +16 -0
  50. data/lib/itsi/server/config/options/pipeline_flush.rb +19 -0
  51. data/lib/itsi/server/config/options/writev.md +25 -0
  52. data/lib/itsi/server/config/options/writev.rb +19 -0
  53. data/lib/itsi/server/config.rb +21 -8
  54. data/lib/itsi/server/default_config/Itsi.rb +1 -4
  55. data/lib/itsi/server/grpc/grpc_call.rb +2 -0
  56. data/lib/itsi/server/grpc/grpc_interface.rb +2 -2
  57. data/lib/itsi/server/rack/handler/itsi.rb +3 -1
  58. data/lib/itsi/server/rack_interface.rb +17 -12
  59. data/lib/itsi/server/scheduler_interface.rb +2 -0
  60. data/lib/itsi/server/version.rb +1 -1
  61. data/lib/itsi/server.rb +1 -0
  62. data/lib/ruby_lsp/itsi/addon.rb +12 -13
  63. metadata +7 -1
@@ -5,8 +5,8 @@ require "itsi/server"
5
5
 
6
6
  module RubyLsp
7
7
  module Itsi
8
- class Addon < ::RubyLsp::Addon
9
- def activate(global_state, message_queue)
8
+ class Addon < ::RubyLsp::Addon # rubocop:disable Style/Documentation
9
+ def activate(_global_state, message_queue)
10
10
  @message_queue = message_queue
11
11
  end
12
12
 
@@ -20,33 +20,34 @@ module RubyLsp
20
20
  "0.1.0"
21
21
  end
22
22
 
23
-
24
23
  def create_completion_listener(response_builder, node_context, dispatcher, uri)
25
- return unless uri.to_s.end_with?("Itsi.rb")
24
+ return unless uri.to_s =~ /itsi.rb$/i
25
+
26
26
  @in_itsi_file = true
27
27
  CompletionListener.new(response_builder, node_context, dispatcher, uri)
28
28
  end
29
29
 
30
30
  def create_hover_listener(response_builder, node_context, dispatcher)
31
31
  hl = dispatcher.listeners[:on_call_node_enter].find { |c| c.is_a?(RubyLsp::Listeners::Hover) }
32
- return unless hl.instance_variable_get("@path").to_s.end_with?("Itsi.rb")
32
+ return unless hl.instance_variable_get("@path").to_s =~ /itsi.rb$/i
33
+
33
34
  HoverListener.new(response_builder, node_context, dispatcher)
34
35
  end
35
36
  end
36
37
 
37
- class HoverListener
38
+ class HoverListener # rubocop:disable Style/Documentation
38
39
  def initialize(response_builder, node_context, dispatcher)
39
40
  @response_builder = response_builder
40
41
  @node_context = node_context
41
42
  @dispatcher = dispatcher
42
43
 
43
- @options_by_name = ::Itsi::Server::Config::Option.subclasses.group_by(&:option_name).map{|k,v| [k,v.first]}.to_h
44
- @middlewares_by_name = ::Itsi::Server::Config::Middleware.subclasses.group_by(&:middleware_name).map{|k,v| [k,v.first]}.to_h
44
+ @options_by_name = ::Itsi::Server::Config::Option.subclasses.group_by(&:option_name).transform_values(&:first)
45
+ @middlewares_by_name = ::Itsi::Server::Config::Middleware.subclasses.group_by(&:middleware_name).transform_values(&:first)
45
46
  # Register for call nodes for hover events
46
47
  dispatcher.register(self, :on_call_node_enter)
47
48
  end
48
49
 
49
- def on_call_node_enter(node)
50
+ def on_call_node_enter(node) # rubocop:disable Metrics/MethodLength
50
51
  if (matched_class = @options_by_name[node.message.to_sym])
51
52
  @response_builder.push(
52
53
  matched_class.documentation,
@@ -61,7 +62,7 @@ module RubyLsp
61
62
  end
62
63
  end
63
64
 
64
- class CompletionListener
65
+ class CompletionListener # rubocop:disable Style/Documentation
65
66
  def initialize(response_builder, node_context, dispatcher, uri)
66
67
  @response_builder = response_builder
67
68
  @node_context = node_context
@@ -74,7 +75,7 @@ module RubyLsp
74
75
  dispatcher.register(self, :completion_item_resolve)
75
76
  end
76
77
 
77
- def on_call_node_enter(node)
78
+ def on_call_node_enter(node) # rubocop:disable Metrics/AbcSize
78
79
  # Only handle method calls that are being typed (i.e. no arguments yet)
79
80
  return unless node.arguments.nil?
80
81
 
@@ -122,8 +123,6 @@ module RubyLsp
122
123
  end
123
124
  end
124
125
  end
125
-
126
-
127
126
  end
128
127
  end
129
128
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itsi-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.16
4
+ version: 0.2.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wouter Coppieters
@@ -197,6 +197,7 @@ files:
197
197
  - ext/itsi_server/src/server/binds/tls.rs
198
198
  - ext/itsi_server/src/server/binds/tls/locked_dir_cache.rs
199
199
  - ext/itsi_server/src/server/byte_frame.rs
200
+ - ext/itsi_server/src/server/frame_stream.rs
200
201
  - ext/itsi_server/src/server/http_message_types.rs
201
202
  - ext/itsi_server/src/server/io_stream.rs
202
203
  - ext/itsi_server/src/server/lifecycle_event.rs
@@ -260,6 +261,7 @@ files:
260
261
  - lib/itsi/http_request/response_status_shortcodes.rb
261
262
  - lib/itsi/http_response.rb
262
263
  - lib/itsi/passfile.rb
264
+ - lib/itsi/rack_env_pool.rb
263
265
  - lib/itsi/server.rb
264
266
  - lib/itsi/server/config.rb
265
267
  - lib/itsi/server/config/config_helpers.rb
@@ -486,6 +488,8 @@ files:
486
488
  - lib/itsi/server/config/options/oob_gc_responses_threshold.rb
487
489
  - lib/itsi/server/config/options/pin_worker_cores.md
488
490
  - lib/itsi/server/config/options/pin_worker_cores.rb
491
+ - lib/itsi/server/config/options/pipeline_flush.md
492
+ - lib/itsi/server/config/options/pipeline_flush.rb
489
493
  - lib/itsi/server/config/options/preload.md
490
494
  - lib/itsi/server/config/options/preload.rb
491
495
  - lib/itsi/server/config/options/recv_buffer_size.md
@@ -516,6 +520,8 @@ files:
516
520
  - lib/itsi/server/config/options/worker_memory_limit.rb
517
521
  - lib/itsi/server/config/options/workers.md
518
522
  - lib/itsi/server/config/options/workers.rb
523
+ - lib/itsi/server/config/options/writev.md
524
+ - lib/itsi/server/config/options/writev.rb
519
525
  - lib/itsi/server/config/typed_struct.rb
520
526
  - lib/itsi/server/default_app/default_app.rb
521
527
  - lib/itsi/server/default_app/index.html