rbs-relaxed 3.9.0.1

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 (484) hide show
  1. checksums.yaml +7 -0
  2. data/.github/dependabot.yml +22 -0
  3. data/.github/workflows/comments.yml +35 -0
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +82 -0
  6. data/.github/workflows/typecheck.yml +38 -0
  7. data/.github/workflows/windows.yml +43 -0
  8. data/.gitignore +23 -0
  9. data/.rubocop.yml +68 -0
  10. data/BSDL +22 -0
  11. data/CHANGELOG.md +1868 -0
  12. data/COPYING +56 -0
  13. data/README.md +203 -0
  14. data/Rakefile +417 -0
  15. data/Steepfile +44 -0
  16. data/config.yml +313 -0
  17. data/core/array.rbs +4062 -0
  18. data/core/basic_object.rbs +375 -0
  19. data/core/binding.rbs +150 -0
  20. data/core/builtin.rbs +277 -0
  21. data/core/class.rbs +220 -0
  22. data/core/comparable.rbs +171 -0
  23. data/core/complex.rbs +786 -0
  24. data/core/constants.rbs +96 -0
  25. data/core/data.rbs +415 -0
  26. data/core/dir.rbs +981 -0
  27. data/core/encoding.rbs +1371 -0
  28. data/core/enumerable.rbs +2405 -0
  29. data/core/enumerator/product.rbs +92 -0
  30. data/core/enumerator.rbs +630 -0
  31. data/core/env.rbs +6 -0
  32. data/core/errno.rbs +673 -0
  33. data/core/errors.rbs +760 -0
  34. data/core/exception.rbs +485 -0
  35. data/core/false_class.rbs +82 -0
  36. data/core/fiber.rbs +550 -0
  37. data/core/fiber_error.rbs +11 -0
  38. data/core/file.rbs +2936 -0
  39. data/core/file_test.rbs +331 -0
  40. data/core/float.rbs +1151 -0
  41. data/core/gc.rbs +644 -0
  42. data/core/global_variables.rbs +184 -0
  43. data/core/hash.rbs +1861 -0
  44. data/core/integer.rbs +1413 -0
  45. data/core/io/buffer.rbs +984 -0
  46. data/core/io/wait.rbs +70 -0
  47. data/core/io.rbs +3406 -0
  48. data/core/kernel.rbs +3096 -0
  49. data/core/marshal.rbs +207 -0
  50. data/core/match_data.rbs +635 -0
  51. data/core/math.rbs +729 -0
  52. data/core/method.rbs +386 -0
  53. data/core/module.rbs +1704 -0
  54. data/core/nil_class.rbs +209 -0
  55. data/core/numeric.rbs +818 -0
  56. data/core/object.rbs +110 -0
  57. data/core/object_space/weak_key_map.rbs +166 -0
  58. data/core/object_space.rbs +190 -0
  59. data/core/proc.rbs +868 -0
  60. data/core/process.rbs +2296 -0
  61. data/core/ractor.rbs +1068 -0
  62. data/core/random.rbs +237 -0
  63. data/core/range.rbs +1107 -0
  64. data/core/rational.rbs +531 -0
  65. data/core/rb_config.rbs +88 -0
  66. data/core/rbs/unnamed/argf.rbs +1229 -0
  67. data/core/rbs/unnamed/env_class.rbs +1209 -0
  68. data/core/rbs/unnamed/random.rbs +293 -0
  69. data/core/refinement.rbs +59 -0
  70. data/core/regexp.rbs +1930 -0
  71. data/core/ruby_vm.rbs +765 -0
  72. data/core/rubygems/basic_specification.rbs +6 -0
  73. data/core/rubygems/config_file.rbs +38 -0
  74. data/core/rubygems/dependency_installer.rbs +6 -0
  75. data/core/rubygems/errors.rbs +176 -0
  76. data/core/rubygems/installer.rbs +15 -0
  77. data/core/rubygems/path_support.rbs +6 -0
  78. data/core/rubygems/platform.rbs +7 -0
  79. data/core/rubygems/request_set.rbs +49 -0
  80. data/core/rubygems/requirement.rbs +148 -0
  81. data/core/rubygems/rubygems.rbs +1171 -0
  82. data/core/rubygems/source_list.rbs +15 -0
  83. data/core/rubygems/specification.rbs +23 -0
  84. data/core/rubygems/stream_ui.rbs +5 -0
  85. data/core/rubygems/uninstaller.rbs +10 -0
  86. data/core/rubygems/version.rbs +294 -0
  87. data/core/set.rbs +621 -0
  88. data/core/signal.rbs +100 -0
  89. data/core/string.rbs +3583 -0
  90. data/core/struct.rbs +667 -0
  91. data/core/symbol.rbs +475 -0
  92. data/core/thread.rbs +1765 -0
  93. data/core/thread_group.rbs +79 -0
  94. data/core/time.rbs +1762 -0
  95. data/core/trace_point.rbs +477 -0
  96. data/core/true_class.rbs +98 -0
  97. data/core/unbound_method.rbs +329 -0
  98. data/core/warning.rbs +87 -0
  99. data/docs/CONTRIBUTING.md +106 -0
  100. data/docs/architecture.md +110 -0
  101. data/docs/collection.md +192 -0
  102. data/docs/data_and_struct.md +86 -0
  103. data/docs/gem.md +57 -0
  104. data/docs/rbs_by_example.md +309 -0
  105. data/docs/repo.md +125 -0
  106. data/docs/sigs.md +167 -0
  107. data/docs/stdlib.md +147 -0
  108. data/docs/syntax.md +910 -0
  109. data/docs/tools.md +17 -0
  110. data/exe/rbs +7 -0
  111. data/ext/rbs_extension/extconf.rb +15 -0
  112. data/ext/rbs_extension/lexer.c +2728 -0
  113. data/ext/rbs_extension/lexer.h +179 -0
  114. data/ext/rbs_extension/lexer.re +147 -0
  115. data/ext/rbs_extension/lexstate.c +175 -0
  116. data/ext/rbs_extension/location.c +325 -0
  117. data/ext/rbs_extension/location.h +85 -0
  118. data/ext/rbs_extension/main.c +33 -0
  119. data/ext/rbs_extension/parser.c +2973 -0
  120. data/ext/rbs_extension/parser.h +18 -0
  121. data/ext/rbs_extension/parserstate.c +397 -0
  122. data/ext/rbs_extension/parserstate.h +163 -0
  123. data/ext/rbs_extension/rbs_extension.h +31 -0
  124. data/ext/rbs_extension/unescape.c +32 -0
  125. data/goodcheck.yml +91 -0
  126. data/include/rbs/constants.h +82 -0
  127. data/include/rbs/ruby_objs.h +72 -0
  128. data/include/rbs/util/rbs_constant_pool.h +219 -0
  129. data/include/rbs.h +7 -0
  130. data/lib/rbs/ancestor_graph.rb +92 -0
  131. data/lib/rbs/annotate/annotations.rb +199 -0
  132. data/lib/rbs/annotate/formatter.rb +92 -0
  133. data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
  134. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  135. data/lib/rbs/annotate.rb +8 -0
  136. data/lib/rbs/ast/annotation.rb +29 -0
  137. data/lib/rbs/ast/comment.rb +29 -0
  138. data/lib/rbs/ast/declarations.rb +467 -0
  139. data/lib/rbs/ast/directives.rb +49 -0
  140. data/lib/rbs/ast/members.rb +451 -0
  141. data/lib/rbs/ast/type_param.rb +225 -0
  142. data/lib/rbs/ast/visitor.rb +137 -0
  143. data/lib/rbs/buffer.rb +67 -0
  144. data/lib/rbs/builtin_names.rb +58 -0
  145. data/lib/rbs/cli/colored_io.rb +48 -0
  146. data/lib/rbs/cli/diff.rb +83 -0
  147. data/lib/rbs/cli/validate.rb +357 -0
  148. data/lib/rbs/cli.rb +1223 -0
  149. data/lib/rbs/collection/cleaner.rb +38 -0
  150. data/lib/rbs/collection/config/lockfile.rb +92 -0
  151. data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
  152. data/lib/rbs/collection/config.rb +81 -0
  153. data/lib/rbs/collection/installer.rb +32 -0
  154. data/lib/rbs/collection/sources/base.rb +14 -0
  155. data/lib/rbs/collection/sources/git.rb +258 -0
  156. data/lib/rbs/collection/sources/local.rb +81 -0
  157. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  158. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  159. data/lib/rbs/collection/sources.rb +38 -0
  160. data/lib/rbs/collection.rb +16 -0
  161. data/lib/rbs/constant.rb +28 -0
  162. data/lib/rbs/definition.rb +401 -0
  163. data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
  164. data/lib/rbs/definition_builder/method_builder.rb +254 -0
  165. data/lib/rbs/definition_builder.rb +845 -0
  166. data/lib/rbs/diff.rb +125 -0
  167. data/lib/rbs/environment/use_map.rb +77 -0
  168. data/lib/rbs/environment.rb +829 -0
  169. data/lib/rbs/environment_loader.rb +173 -0
  170. data/lib/rbs/environment_walker.rb +155 -0
  171. data/lib/rbs/errors.rb +645 -0
  172. data/lib/rbs/factory.rb +18 -0
  173. data/lib/rbs/file_finder.rb +28 -0
  174. data/lib/rbs/location_aux.rb +138 -0
  175. data/lib/rbs/locator.rb +243 -0
  176. data/lib/rbs/method_type.rb +143 -0
  177. data/lib/rbs/namespace.rb +125 -0
  178. data/lib/rbs/parser/lex_result.rb +15 -0
  179. data/lib/rbs/parser/token.rb +23 -0
  180. data/lib/rbs/parser_aux.rb +114 -0
  181. data/lib/rbs/prototype/helpers.rb +140 -0
  182. data/lib/rbs/prototype/node_usage.rb +99 -0
  183. data/lib/rbs/prototype/rb.rb +840 -0
  184. data/lib/rbs/prototype/rbi.rb +641 -0
  185. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  186. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  187. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  188. data/lib/rbs/prototype/runtime.rb +667 -0
  189. data/lib/rbs/repository.rb +127 -0
  190. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  191. data/lib/rbs/resolver/type_name_resolver.rb +91 -0
  192. data/lib/rbs/sorter.rb +198 -0
  193. data/lib/rbs/substitution.rb +83 -0
  194. data/lib/rbs/subtractor.rb +201 -0
  195. data/lib/rbs/test/errors.rb +80 -0
  196. data/lib/rbs/test/guaranteed.rb +30 -0
  197. data/lib/rbs/test/hook.rb +212 -0
  198. data/lib/rbs/test/observer.rb +19 -0
  199. data/lib/rbs/test/setup.rb +84 -0
  200. data/lib/rbs/test/setup_helper.rb +50 -0
  201. data/lib/rbs/test/tester.rb +167 -0
  202. data/lib/rbs/test/type_check.rb +435 -0
  203. data/lib/rbs/test.rb +112 -0
  204. data/lib/rbs/type_alias_dependency.rb +100 -0
  205. data/lib/rbs/type_alias_regularity.rb +126 -0
  206. data/lib/rbs/type_name.rb +109 -0
  207. data/lib/rbs/types.rb +1596 -0
  208. data/lib/rbs/unit_test/convertibles.rb +176 -0
  209. data/lib/rbs/unit_test/spy.rb +138 -0
  210. data/lib/rbs/unit_test/type_assertions.rb +347 -0
  211. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  212. data/lib/rbs/unit_test.rb +6 -0
  213. data/lib/rbs/validator.rb +186 -0
  214. data/lib/rbs/variance_calculator.rb +189 -0
  215. data/lib/rbs/vendorer.rb +71 -0
  216. data/lib/rbs/version.rb +5 -0
  217. data/lib/rbs/writer.rb +424 -0
  218. data/lib/rbs.rb +94 -0
  219. data/lib/rdoc/discover.rb +20 -0
  220. data/lib/rdoc_plugin/parser.rb +163 -0
  221. data/rbs-relaxed.gemspec +48 -0
  222. data/schema/annotation.json +14 -0
  223. data/schema/comment.json +26 -0
  224. data/schema/decls.json +326 -0
  225. data/schema/function.json +87 -0
  226. data/schema/location.json +56 -0
  227. data/schema/members.json +266 -0
  228. data/schema/methodType.json +50 -0
  229. data/schema/typeParam.json +36 -0
  230. data/schema/types.json +317 -0
  231. data/sig/ancestor_builder.rbs +163 -0
  232. data/sig/ancestor_graph.rbs +60 -0
  233. data/sig/annotate/annotations.rbs +102 -0
  234. data/sig/annotate/formatter.rbs +24 -0
  235. data/sig/annotate/rdoc_annotater.rbs +82 -0
  236. data/sig/annotate/rdoc_source.rbs +30 -0
  237. data/sig/annotation.rbs +27 -0
  238. data/sig/buffer.rbs +32 -0
  239. data/sig/builtin_names.rbs +44 -0
  240. data/sig/cli/colored_io.rbs +15 -0
  241. data/sig/cli/diff.rbs +21 -0
  242. data/sig/cli/validate.rbs +43 -0
  243. data/sig/cli.rbs +87 -0
  244. data/sig/collection/cleaner.rbs +13 -0
  245. data/sig/collection/config/lockfile.rbs +74 -0
  246. data/sig/collection/config/lockfile_generator.rbs +66 -0
  247. data/sig/collection/config.rbs +46 -0
  248. data/sig/collection/installer.rbs +17 -0
  249. data/sig/collection/sources.rbs +214 -0
  250. data/sig/collection.rbs +4 -0
  251. data/sig/comment.rbs +26 -0
  252. data/sig/constant.rbs +21 -0
  253. data/sig/declarations.rbs +267 -0
  254. data/sig/definition.rbs +173 -0
  255. data/sig/definition_builder.rbs +165 -0
  256. data/sig/diff.rbs +28 -0
  257. data/sig/directives.rbs +77 -0
  258. data/sig/environment.rbs +279 -0
  259. data/sig/environment_loader.rbs +111 -0
  260. data/sig/environment_walker.rbs +65 -0
  261. data/sig/errors.rbs +405 -0
  262. data/sig/factory.rbs +5 -0
  263. data/sig/file_finder.rbs +28 -0
  264. data/sig/location.rbs +110 -0
  265. data/sig/locator.rbs +58 -0
  266. data/sig/manifest.yaml +7 -0
  267. data/sig/members.rbs +258 -0
  268. data/sig/method_builder.rbs +84 -0
  269. data/sig/method_types.rbs +58 -0
  270. data/sig/namespace.rbs +146 -0
  271. data/sig/parser.rbs +100 -0
  272. data/sig/prototype/helpers.rbs +27 -0
  273. data/sig/prototype/node_usage.rbs +20 -0
  274. data/sig/prototype/rb.rbs +96 -0
  275. data/sig/prototype/rbi.rbs +75 -0
  276. data/sig/prototype/runtime.rbs +182 -0
  277. data/sig/rbs.rbs +21 -0
  278. data/sig/rdoc/rbs.rbs +67 -0
  279. data/sig/repository.rbs +85 -0
  280. data/sig/resolver/constant_resolver.rbs +92 -0
  281. data/sig/resolver/context.rbs +34 -0
  282. data/sig/resolver/type_name_resolver.rbs +35 -0
  283. data/sig/shims/bundler.rbs +38 -0
  284. data/sig/shims/enumerable.rbs +5 -0
  285. data/sig/shims/rubygems.rbs +19 -0
  286. data/sig/sorter.rbs +41 -0
  287. data/sig/substitution.rbs +48 -0
  288. data/sig/subtractor.rbs +37 -0
  289. data/sig/test/errors.rbs +52 -0
  290. data/sig/test/guranteed.rbs +9 -0
  291. data/sig/test/type_check.rbs +19 -0
  292. data/sig/test.rbs +82 -0
  293. data/sig/type_alias_dependency.rbs +53 -0
  294. data/sig/type_alias_regularity.rbs +98 -0
  295. data/sig/type_param.rbs +110 -0
  296. data/sig/typename.rbs +79 -0
  297. data/sig/types.rbs +579 -0
  298. data/sig/unit_test/convertibles.rbs +154 -0
  299. data/sig/unit_test/spy.rbs +30 -0
  300. data/sig/unit_test/type_assertions.rbs +196 -0
  301. data/sig/unit_test/with_aliases.rbs +136 -0
  302. data/sig/use_map.rbs +35 -0
  303. data/sig/util.rbs +9 -0
  304. data/sig/validator.rbs +63 -0
  305. data/sig/variance_calculator.rbs +87 -0
  306. data/sig/vendorer.rbs +51 -0
  307. data/sig/version.rbs +3 -0
  308. data/sig/visitor.rbs +47 -0
  309. data/sig/writer.rbs +127 -0
  310. data/src/constants.c +153 -0
  311. data/src/ruby_objs.c +795 -0
  312. data/src/util/rbs_constant_pool.c +342 -0
  313. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  314. data/stdlib/abbrev/0/array.rbs +26 -0
  315. data/stdlib/base64/0/base64.rbs +355 -0
  316. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  317. data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
  318. data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
  319. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  320. data/stdlib/cgi/0/core.rbs +1285 -0
  321. data/stdlib/cgi/0/manifest.yaml +3 -0
  322. data/stdlib/coverage/0/coverage.rbs +263 -0
  323. data/stdlib/csv/0/csv.rbs +3776 -0
  324. data/stdlib/csv/0/manifest.yaml +3 -0
  325. data/stdlib/date/0/date.rbs +1585 -0
  326. data/stdlib/date/0/date_time.rbs +616 -0
  327. data/stdlib/date/0/time.rbs +26 -0
  328. data/stdlib/dbm/0/dbm.rbs +421 -0
  329. data/stdlib/delegate/0/delegator.rbs +184 -0
  330. data/stdlib/delegate/0/kernel.rbs +47 -0
  331. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  332. data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
  333. data/stdlib/digest/0/digest.rbs +577 -0
  334. data/stdlib/erb/0/erb.rbs +532 -0
  335. data/stdlib/etc/0/etc.rbs +865 -0
  336. data/stdlib/fileutils/0/fileutils.rbs +1734 -0
  337. data/stdlib/find/0/find.rbs +49 -0
  338. data/stdlib/forwardable/0/forwardable.rbs +268 -0
  339. data/stdlib/io-console/0/io-console.rbs +414 -0
  340. data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
  341. data/stdlib/json/0/json.rbs +1916 -0
  342. data/stdlib/kconv/0/kconv.rbs +166 -0
  343. data/stdlib/logger/0/formatter.rbs +45 -0
  344. data/stdlib/logger/0/log_device.rbs +100 -0
  345. data/stdlib/logger/0/logger.rbs +796 -0
  346. data/stdlib/logger/0/manifest.yaml +2 -0
  347. data/stdlib/logger/0/period.rbs +17 -0
  348. data/stdlib/logger/0/severity.rbs +34 -0
  349. data/stdlib/minitest/0/kernel.rbs +42 -0
  350. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  351. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  352. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  353. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  354. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  355. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  356. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  357. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  358. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  359. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  360. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  361. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  362. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  363. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  364. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  365. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  366. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  367. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  368. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  369. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  370. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  371. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  372. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  373. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  374. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  375. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  376. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  377. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  378. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  379. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  380. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  381. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  382. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  383. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  384. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  385. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  386. data/stdlib/minitest/0/minitest.rbs +115 -0
  387. data/stdlib/monitor/0/monitor.rbs +363 -0
  388. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  389. data/stdlib/net-http/0/manifest.yaml +3 -0
  390. data/stdlib/net-http/0/net-http.rbs +5552 -0
  391. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  392. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  393. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  394. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  395. data/stdlib/nkf/0/nkf.rbs +402 -0
  396. data/stdlib/objspace/0/objspace.rbs +487 -0
  397. data/stdlib/observable/0/observable.rbs +217 -0
  398. data/stdlib/open-uri/0/manifest.yaml +4 -0
  399. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  400. data/stdlib/open3/0/open3.rbs +147 -0
  401. data/stdlib/openssl/0/manifest.yaml +3 -0
  402. data/stdlib/openssl/0/openssl.rbs +12113 -0
  403. data/stdlib/optparse/0/optparse.rbs +1725 -0
  404. data/stdlib/pathname/0/pathname.rbs +1406 -0
  405. data/stdlib/pp/0/manifest.yaml +2 -0
  406. data/stdlib/pp/0/pp.rbs +300 -0
  407. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  408. data/stdlib/pstore/0/pstore.rbs +603 -0
  409. data/stdlib/psych/0/core_ext.rbs +12 -0
  410. data/stdlib/psych/0/dbm.rbs +237 -0
  411. data/stdlib/psych/0/manifest.yaml +3 -0
  412. data/stdlib/psych/0/psych.rbs +402 -0
  413. data/stdlib/psych/0/store.rbs +59 -0
  414. data/stdlib/pty/0/pty.rbs +237 -0
  415. data/stdlib/rdoc/0/code_object.rbs +51 -0
  416. data/stdlib/rdoc/0/comment.rbs +59 -0
  417. data/stdlib/rdoc/0/context.rbs +153 -0
  418. data/stdlib/rdoc/0/markup.rbs +117 -0
  419. data/stdlib/rdoc/0/parser.rbs +56 -0
  420. data/stdlib/rdoc/0/rdoc.rbs +391 -0
  421. data/stdlib/rdoc/0/ri.rbs +17 -0
  422. data/stdlib/rdoc/0/store.rbs +48 -0
  423. data/stdlib/rdoc/0/top_level.rbs +97 -0
  424. data/stdlib/resolv/0/manifest.yaml +3 -0
  425. data/stdlib/resolv/0/resolv.rbs +1830 -0
  426. data/stdlib/ripper/0/ripper.rbs +1648 -0
  427. data/stdlib/securerandom/0/securerandom.rbs +62 -0
  428. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  429. data/stdlib/singleton/0/singleton.rbs +131 -0
  430. data/stdlib/socket/0/addrinfo.rbs +666 -0
  431. data/stdlib/socket/0/basic_socket.rbs +590 -0
  432. data/stdlib/socket/0/constants.rbs +2295 -0
  433. data/stdlib/socket/0/ip_socket.rbs +92 -0
  434. data/stdlib/socket/0/socket.rbs +4157 -0
  435. data/stdlib/socket/0/socket_error.rbs +5 -0
  436. data/stdlib/socket/0/tcp_server.rbs +192 -0
  437. data/stdlib/socket/0/tcp_socket.rbs +79 -0
  438. data/stdlib/socket/0/udp_socket.rbs +133 -0
  439. data/stdlib/socket/0/unix_server.rbs +169 -0
  440. data/stdlib/socket/0/unix_socket.rbs +172 -0
  441. data/stdlib/stringio/0/stringio.rbs +567 -0
  442. data/stdlib/strscan/0/string_scanner.rbs +1627 -0
  443. data/stdlib/tempfile/0/tempfile.rbs +479 -0
  444. data/stdlib/time/0/time.rbs +432 -0
  445. data/stdlib/timeout/0/timeout.rbs +81 -0
  446. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  447. data/stdlib/tsort/0/cyclic.rbs +5 -0
  448. data/stdlib/tsort/0/interfaces.rbs +20 -0
  449. data/stdlib/tsort/0/tsort.rbs +409 -0
  450. data/stdlib/uri/0/common.rbs +582 -0
  451. data/stdlib/uri/0/file.rbs +118 -0
  452. data/stdlib/uri/0/ftp.rbs +13 -0
  453. data/stdlib/uri/0/generic.rbs +1108 -0
  454. data/stdlib/uri/0/http.rbs +104 -0
  455. data/stdlib/uri/0/https.rbs +14 -0
  456. data/stdlib/uri/0/ldap.rbs +230 -0
  457. data/stdlib/uri/0/ldaps.rbs +14 -0
  458. data/stdlib/uri/0/mailto.rbs +92 -0
  459. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  460. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  461. data/stdlib/uri/0/ws.rbs +13 -0
  462. data/stdlib/uri/0/wss.rbs +9 -0
  463. data/stdlib/yaml/0/manifest.yaml +2 -0
  464. data/stdlib/yaml/0/yaml.rbs +1 -0
  465. data/stdlib/zlib/0/buf_error.rbs +10 -0
  466. data/stdlib/zlib/0/data_error.rbs +10 -0
  467. data/stdlib/zlib/0/deflate.rbs +210 -0
  468. data/stdlib/zlib/0/error.rbs +20 -0
  469. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  470. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  471. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  472. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  473. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  474. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  475. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  476. data/stdlib/zlib/0/inflate.rbs +180 -0
  477. data/stdlib/zlib/0/mem_error.rbs +10 -0
  478. data/stdlib/zlib/0/need_dict.rbs +13 -0
  479. data/stdlib/zlib/0/stream_end.rbs +11 -0
  480. data/stdlib/zlib/0/stream_error.rbs +11 -0
  481. data/stdlib/zlib/0/version_error.rbs +11 -0
  482. data/stdlib/zlib/0/zlib.rbs +449 -0
  483. data/stdlib/zlib/0/zstream.rbs +200 -0
  484. metadata +532 -0
@@ -0,0 +1,5 @@
1
+ # <!-- rdoc-file=ext/socket/init.c -->
2
+ # SocketError is the error class for socket.
3
+ #
4
+ class SocketError < StandardError
5
+ end
@@ -0,0 +1,192 @@
1
+ # <!-- rdoc-file=ext/socket/tcpserver.c -->
2
+ # TCPServer represents a TCP/IP server socket.
3
+ #
4
+ # A simple TCP server may look like:
5
+ #
6
+ # require 'socket'
7
+ #
8
+ # server = TCPServer.new 2000 # Server bind to port 2000
9
+ # loop do
10
+ # client = server.accept # Wait for a client to connect
11
+ # client.puts "Hello !"
12
+ # client.puts "Time is #{Time.now}"
13
+ # client.close
14
+ # end
15
+ #
16
+ # A more usable server (serving multiple clients):
17
+ #
18
+ # require 'socket'
19
+ #
20
+ # server = TCPServer.new 2000
21
+ # loop do
22
+ # Thread.start(server.accept) do |client|
23
+ # client.puts "Hello !"
24
+ # client.puts "Time is #{Time.now}"
25
+ # client.close
26
+ # end
27
+ # end
28
+ #
29
+ class TCPServer < TCPSocket
30
+ # <!--
31
+ # rdoc-file=ext/socket/tcpserver.c
32
+ # - tcpserver.accept => tcpsocket
33
+ # -->
34
+ # Accepts an incoming connection. It returns a new TCPSocket object.
35
+ #
36
+ # TCPServer.open("127.0.0.1", 14641) {|serv|
37
+ # s = serv.accept
38
+ # s.puts Time.now
39
+ # s.close
40
+ # }
41
+ #
42
+ def accept: () -> TCPSocket
43
+
44
+ # <!--
45
+ # rdoc-file=ext/socket/lib/socket.rb
46
+ # - tcpserver.accept_nonblock([options]) => tcpsocket
47
+ # -->
48
+ # Accepts an incoming connection using accept(2) after O_NONBLOCK is set for the
49
+ # underlying file descriptor. It returns an accepted TCPSocket for the incoming
50
+ # connection.
51
+ #
52
+ # ### Example
53
+ # require 'socket'
54
+ # serv = TCPServer.new(2202)
55
+ # begin # emulate blocking accept
56
+ # sock = serv.accept_nonblock
57
+ # rescue IO::WaitReadable, Errno::EINTR
58
+ # IO.select([serv])
59
+ # retry
60
+ # end
61
+ # # sock is an accepted socket.
62
+ #
63
+ # Refer to Socket#accept for the exceptions that may be thrown if the call to
64
+ # TCPServer#accept_nonblock fails.
65
+ #
66
+ # TCPServer#accept_nonblock may raise any error corresponding to accept(2)
67
+ # failure, including Errno::EWOULDBLOCK.
68
+ #
69
+ # If the exception is Errno::EWOULDBLOCK, Errno::EAGAIN, Errno::ECONNABORTED,
70
+ # Errno::EPROTO, it is extended by IO::WaitReadable. So IO::WaitReadable can be
71
+ # used to rescue the exceptions for retrying accept_nonblock.
72
+ #
73
+ # By specifying a keyword argument *exception* to `false`, you can indicate that
74
+ # accept_nonblock should not raise an IO::WaitReadable exception, but return the
75
+ # symbol `:wait_readable` instead.
76
+ #
77
+ # ### See
78
+ # * TCPServer#accept
79
+ # * Socket#accept
80
+ #
81
+ def accept_nonblock: (?exception: boolish) -> (TCPSocket | :wait_readable)
82
+
83
+ # <!--
84
+ # rdoc-file=ext/socket/tcpserver.c
85
+ # - socket.listen( int ) => 0
86
+ # -->
87
+ # Listens for connections, using the specified `int` as the backlog. A call to
88
+ # *listen* only applies if the `socket` is of type SOCK_STREAM or
89
+ # SOCK_SEQPACKET.
90
+ #
91
+ # ### Parameter
92
+ # * `backlog` - the maximum length of the queue for pending connections.
93
+ #
94
+ # ### Example 1
95
+ # require 'socket'
96
+ # include Socket::Constants
97
+ # socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
98
+ # sockaddr = Socket.pack_sockaddr_in( 2200, 'localhost' )
99
+ # socket.bind( sockaddr )
100
+ # socket.listen( 5 )
101
+ #
102
+ # ### Example 2 (listening on an arbitrary port, unix-based systems only):
103
+ # require 'socket'
104
+ # include Socket::Constants
105
+ # socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
106
+ # socket.listen( 1 )
107
+ #
108
+ # ### Unix-based Exceptions
109
+ # On unix based systems the above will work because a new `sockaddr` struct is
110
+ # created on the address ADDR_ANY, for an arbitrary port number as handed off by
111
+ # the kernel. It will not work on Windows, because Windows requires that the
112
+ # `socket` is bound by calling *bind* before it can *listen*.
113
+ #
114
+ # If the *backlog* amount exceeds the implementation-dependent maximum queue
115
+ # length, the implementation's maximum queue length will be used.
116
+ #
117
+ # On unix-based based systems the following system exceptions may be raised if
118
+ # the call to *listen* fails:
119
+ # * Errno::EBADF - the *socket* argument is not a valid file descriptor
120
+ # * Errno::EDESTADDRREQ - the *socket* is not bound to a local address, and
121
+ # the protocol does not support listening on an unbound socket
122
+ # * Errno::EINVAL - the *socket* is already connected
123
+ # * Errno::ENOTSOCK - the *socket* argument does not refer to a socket
124
+ # * Errno::EOPNOTSUPP - the *socket* protocol does not support listen
125
+ # * Errno::EACCES - the calling process does not have appropriate privileges
126
+ # * Errno::EINVAL - the *socket* has been shut down
127
+ # * Errno::ENOBUFS - insufficient resources are available in the system to
128
+ # complete the call
129
+ #
130
+ # ### Windows Exceptions
131
+ # On Windows systems the following system exceptions may be raised if the call
132
+ # to *listen* fails:
133
+ # * Errno::ENETDOWN - the network is down
134
+ # * Errno::EADDRINUSE - the socket's local address is already in use. This
135
+ # usually occurs during the execution of *bind* but could be delayed if the
136
+ # call to *bind* was to a partially wildcard address (involving ADDR_ANY)
137
+ # and if a specific address needs to be committed at the time of the call to
138
+ # *listen*
139
+ # * Errno::EINPROGRESS - a Windows Sockets 1.1 call is in progress or the
140
+ # service provider is still processing a callback function
141
+ # * Errno::EINVAL - the `socket` has not been bound with a call to *bind*.
142
+ # * Errno::EISCONN - the `socket` is already connected
143
+ # * Errno::EMFILE - no more socket descriptors are available
144
+ # * Errno::ENOBUFS - no buffer space is available
145
+ # * Errno::ENOTSOC - `socket` is not a socket
146
+ # * Errno::EOPNOTSUPP - the referenced `socket` is not a type that supports
147
+ # the *listen* method
148
+ #
149
+ # ### See
150
+ # * listen manual pages on unix-based systems
151
+ # * listen function in Microsoft's Winsock functions reference
152
+ #
153
+ def listen: (Integer backlog) -> void
154
+
155
+ # <!--
156
+ # rdoc-file=ext/socket/tcpserver.c
157
+ # - tcpserver.sysaccept => file_descriptor
158
+ # -->
159
+ # Returns a file descriptor of a accepted connection.
160
+ #
161
+ # TCPServer.open("127.0.0.1", 28561) {|serv|
162
+ # fd = serv.sysaccept
163
+ # s = IO.for_fd(fd)
164
+ # s.puts Time.now
165
+ # s.close
166
+ # }
167
+ #
168
+ def sysaccept: () -> Integer
169
+
170
+ private
171
+
172
+ def __accept_nonblock: (untyped) -> untyped
173
+
174
+ # <!--
175
+ # rdoc-file=ext/socket/tcpserver.c
176
+ # - TCPServer.new([hostname,] port) => tcpserver
177
+ # -->
178
+ # Creates a new server socket bound to *port*.
179
+ #
180
+ # If *hostname* is given, the socket is bound to it.
181
+ #
182
+ # serv = TCPServer.new("127.0.0.1", 28561)
183
+ # s = serv.accept
184
+ # s.puts Time.now
185
+ # s.close
186
+ #
187
+ # Internally, TCPServer.new calls getaddrinfo() function to obtain addresses. If
188
+ # getaddrinfo() returns multiple addresses, TCPServer.new tries to create a
189
+ # server socket for each address and returns first one that is successful.
190
+ #
191
+ def initialize: (?String host, Integer port) -> untyped
192
+ end
@@ -0,0 +1,79 @@
1
+ # <!-- rdoc-file=ext/socket/tcpsocket.c -->
2
+ # TCPSocket represents a TCP/IP client socket.
3
+ #
4
+ # A simple client may look like:
5
+ #
6
+ # require 'socket'
7
+ #
8
+ # s = TCPSocket.new 'localhost', 2000
9
+ #
10
+ # while line = s.gets # Read lines from socket
11
+ # puts line # and print them
12
+ # end
13
+ #
14
+ # s.close # close socket when done
15
+ #
16
+ class TCPSocket < IPSocket
17
+ # <!--
18
+ # rdoc-file=ext/socket/tcpsocket.c
19
+ # - TCPSocket.gethostbyname(hostname) => [official_hostname, alias_hostnames, address_family, *address_list]
20
+ # -->
21
+ # Use Addrinfo.getaddrinfo instead. This method is deprecated for the following
22
+ # reasons:
23
+ #
24
+ # * The 3rd element of the result is the address family of the first address.
25
+ # The address families of the rest of the addresses are not returned.
26
+ # * gethostbyname() may take a long time and it may block other threads. (GVL
27
+ # cannot be released since gethostbyname() is not thread safe.)
28
+ # * This method uses gethostbyname() function already removed from POSIX.
29
+ #
30
+ # This method lookups host information by *hostname*.
31
+ #
32
+ # TCPSocket.gethostbyname("localhost")
33
+ # #=> ["localhost", ["hal"], 2, "127.0.0.1"]
34
+ #
35
+ def self.gethostbyname: (String host) -> [ String, Array[String], Integer, String ]
36
+
37
+ private
38
+
39
+ # <!--
40
+ # rdoc-file=ext/socket/tcpsocket.c
41
+ # - TCPSocket.new(remote_host, remote_port, local_host=nil, local_port=nil, resolv_timeout: nil, connect_timeout: nil, fast_fallback: true)
42
+ # -->
43
+ # Opens a TCP connection to `remote_host` on `remote_port`. If `local_host` and
44
+ # `local_port` are specified, then those parameters are used on the local end to
45
+ # establish the connection.
46
+ #
47
+ # Starting from Ruby 3.4, this method operates according to the Happy Eyeballs
48
+ # Version 2 ([RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305))
49
+ # algorithm by default, except on Windows.
50
+ #
51
+ # For details on Happy Eyeballs Version 2, see
52
+ # [Socket.tcp_fast_fallback=](rdoc-ref:Socket.tcp_fast_fallback=).
53
+ #
54
+ # To make it behave the same as in Ruby 3.3 and earlier, explicitly specify the
55
+ # option fast_fallback:false. Or, setting Socket.tcp_fast_fallback=false will
56
+ # disable Happy Eyeballs Version 2 not only for this method but for all Socket
57
+ # globally.
58
+ #
59
+ # When using TCPSocket.new on Windows, Happy Eyeballs Version 2 is not provided,
60
+ # and it behaves the same as in Ruby 3.3 and earlier.
61
+ #
62
+ # :resolv_timeout
63
+ # : Specifies the timeout in seconds from when the hostname resolution starts.
64
+ #
65
+ # :connect_timeout
66
+ # : This method sequentially attempts connecting to all candidate destination
67
+ # addresses.
68
+ # The `connect_timeout` specifies the timeout in seconds from the start of
69
+ # the connection attempt to the last candidate.
70
+ # By default, all connection attempts continue until the timeout occurs.
71
+ # When `fast_fallback:false` is explicitly specified,
72
+ # a timeout is set for each connection attempt and any connection attempt
73
+ # that exceeds its timeout will be canceled.
74
+ #
75
+ # :fast_fallback
76
+ # : Enables the Happy Eyeballs Version 2 algorithm (enabled by default).
77
+ #
78
+ def initialize: (String remote_host, Integer remote_port, ?String local_host, ?Integer local_port) -> untyped
79
+ end
@@ -0,0 +1,133 @@
1
+ # <!-- rdoc-file=ext/socket/udpsocket.c -->
2
+ # UDPSocket represents a UDP/IP socket.
3
+ #
4
+ class UDPSocket < IPSocket
5
+ # <!--
6
+ # rdoc-file=ext/socket/udpsocket.c
7
+ # - udpsocket.bind(host, port) #=> 0
8
+ # -->
9
+ # Binds *udpsocket* to *host*:*port*.
10
+ #
11
+ # u1 = UDPSocket.new
12
+ # u1.bind("127.0.0.1", 4913)
13
+ # u1.send "message-to-self", 0, "127.0.0.1", 4913
14
+ # p u1.recvfrom(10) #=> ["message-to", ["AF_INET", 4913, "localhost", "127.0.0.1"]]
15
+ #
16
+ def bind: (String host, Integer port) -> void
17
+
18
+ # <!--
19
+ # rdoc-file=ext/socket/udpsocket.c
20
+ # - udpsocket.connect(host, port) => 0
21
+ # -->
22
+ # Connects *udpsocket* to *host*:*port*.
23
+ #
24
+ # This makes possible to send without destination address.
25
+ #
26
+ # u1 = UDPSocket.new
27
+ # u1.bind("127.0.0.1", 4913)
28
+ # u2 = UDPSocket.new
29
+ # u2.connect("127.0.0.1", 4913)
30
+ # u2.send "uuuu", 0
31
+ # p u1.recvfrom(10) #=> ["uuuu", ["AF_INET", 33230, "localhost", "127.0.0.1"]]
32
+ #
33
+ def connect: (String host, Integer port) -> void
34
+
35
+ # <!--
36
+ # rdoc-file=ext/socket/lib/socket.rb
37
+ # - udpsocket.recvfrom_nonblock(maxlen [, flags[, outbuf [, options]]]) => [mesg, sender_inet_addr]
38
+ # -->
39
+ # Receives up to *maxlen* bytes from `udpsocket` using recvfrom(2) after
40
+ # O_NONBLOCK is set for the underlying file descriptor. *flags* is zero or more
41
+ # of the `MSG_` options. The first element of the results, *mesg*, is the data
42
+ # received. The second element, *sender_inet_addr*, is an array to represent the
43
+ # sender address.
44
+ #
45
+ # When recvfrom(2) returns 0, Socket#recv_nonblock returns nil. In most cases it
46
+ # means the connection was closed, but it may also mean an empty packet was
47
+ # received, as the underlying API makes it impossible to distinguish these two
48
+ # cases.
49
+ #
50
+ # ### Parameters
51
+ # * `maxlen` - the number of bytes to receive from the socket
52
+ # * `flags` - zero or more of the `MSG_` options
53
+ # * `outbuf` - destination String buffer
54
+ # * `options` - keyword hash, supporting `exception: false`
55
+ #
56
+ # ### Example
57
+ # require 'socket'
58
+ # s1 = UDPSocket.new
59
+ # s1.bind("127.0.0.1", 0)
60
+ # s2 = UDPSocket.new
61
+ # s2.bind("127.0.0.1", 0)
62
+ # s2.connect(*s1.addr.values_at(3,1))
63
+ # s1.connect(*s2.addr.values_at(3,1))
64
+ # s1.send "aaa", 0
65
+ # begin # emulate blocking recvfrom
66
+ # p s2.recvfrom_nonblock(10) #=> ["aaa", ["AF_INET", 33302, "localhost.localdomain", "127.0.0.1"]]
67
+ # rescue IO::WaitReadable
68
+ # IO.select([s2])
69
+ # retry
70
+ # end
71
+ #
72
+ # Refer to Socket#recvfrom for the exceptions that may be thrown if the call to
73
+ # *recvfrom_nonblock* fails.
74
+ #
75
+ # UDPSocket#recvfrom_nonblock may raise any error corresponding to recvfrom(2)
76
+ # failure, including Errno::EWOULDBLOCK.
77
+ #
78
+ # If the exception is Errno::EWOULDBLOCK or Errno::EAGAIN, it is extended by
79
+ # IO::WaitReadable. So IO::WaitReadable can be used to rescue the exceptions for
80
+ # retrying recvfrom_nonblock.
81
+ #
82
+ # By specifying a keyword argument *exception* to `false`, you can indicate that
83
+ # recvfrom_nonblock should not raise an IO::WaitReadable exception, but return
84
+ # the symbol `:wait_readable` instead.
85
+ #
86
+ # ### See
87
+ # * Socket#recvfrom
88
+ #
89
+ def recvfrom_nonblock: (Integer len, ?Integer flag, ?String outbuf, ?exception: boolish) -> [ String, [ String, Integer, String, String ] ]
90
+
91
+ # <!--
92
+ # rdoc-file=ext/socket/udpsocket.c
93
+ # - udpsocket.send(mesg, flags, host, port) => numbytes_sent
94
+ # - udpsocket.send(mesg, flags, sockaddr_to) => numbytes_sent
95
+ # - udpsocket.send(mesg, flags) => numbytes_sent
96
+ # -->
97
+ # Sends *mesg* via *udpsocket*.
98
+ #
99
+ # *flags* should be a bitwise OR of Socket::MSG_* constants.
100
+ #
101
+ # u1 = UDPSocket.new
102
+ # u1.bind("127.0.0.1", 4913)
103
+ #
104
+ # u2 = UDPSocket.new
105
+ # u2.send "hi", 0, "127.0.0.1", 4913
106
+ #
107
+ # mesg, addr = u1.recvfrom(10)
108
+ # u1.send mesg, 0, addr[3], addr[1]
109
+ #
110
+ # p u2.recv(100) #=> "hi"
111
+ #
112
+ def send: (String msg, ?Integer flags, ?String host, ?Integer port) -> Integer
113
+
114
+ private
115
+
116
+ def __recvfrom_nonblock: (untyped, untyped, untyped, untyped) -> untyped
117
+
118
+ # <!--
119
+ # rdoc-file=ext/socket/udpsocket.c
120
+ # - UDPSocket.new([address_family]) => socket
121
+ # -->
122
+ # Creates a new UDPSocket object.
123
+ #
124
+ # *address_family* should be an integer, a string or a symbol: Socket::AF_INET,
125
+ # "AF_INET", :INET, etc.
126
+ #
127
+ # require 'socket'
128
+ #
129
+ # UDPSocket.new #=> #<UDPSocket:fd 3>
130
+ # UDPSocket.new(Socket::AF_INET6) #=> #<UDPSocket:fd 4>
131
+ #
132
+ def initialize: (?Integer family) -> untyped
133
+ end
@@ -0,0 +1,169 @@
1
+ # <!-- rdoc-file=ext/socket/unixserver.c -->
2
+ # UNIXServer represents a UNIX domain stream server socket.
3
+ #
4
+ class UNIXServer < UNIXSocket
5
+ # <!--
6
+ # rdoc-file=ext/socket/unixserver.c
7
+ # - unixserver.accept => unixsocket
8
+ # -->
9
+ # Accepts an incoming connection. It returns a new UNIXSocket object.
10
+ #
11
+ # UNIXServer.open("/tmp/sock") {|serv|
12
+ # UNIXSocket.open("/tmp/sock") {|c|
13
+ # s = serv.accept
14
+ # s.puts "hi"
15
+ # s.close
16
+ # p c.read #=> "hi\n"
17
+ # }
18
+ # }
19
+ #
20
+ def accept: () -> UNIXSocket
21
+
22
+ # <!--
23
+ # rdoc-file=ext/socket/lib/socket.rb
24
+ # - unixserver.accept_nonblock([options]) => unixsocket
25
+ # -->
26
+ # Accepts an incoming connection using accept(2) after O_NONBLOCK is set for the
27
+ # underlying file descriptor. It returns an accepted UNIXSocket for the incoming
28
+ # connection.
29
+ #
30
+ # ### Example
31
+ # require 'socket'
32
+ # serv = UNIXServer.new("/tmp/sock")
33
+ # begin # emulate blocking accept
34
+ # sock = serv.accept_nonblock
35
+ # rescue IO::WaitReadable, Errno::EINTR
36
+ # IO.select([serv])
37
+ # retry
38
+ # end
39
+ # # sock is an accepted socket.
40
+ #
41
+ # Refer to Socket#accept for the exceptions that may be thrown if the call to
42
+ # UNIXServer#accept_nonblock fails.
43
+ #
44
+ # UNIXServer#accept_nonblock may raise any error corresponding to accept(2)
45
+ # failure, including Errno::EWOULDBLOCK.
46
+ #
47
+ # If the exception is Errno::EWOULDBLOCK, Errno::EAGAIN, Errno::ECONNABORTED or
48
+ # Errno::EPROTO, it is extended by IO::WaitReadable. So IO::WaitReadable can be
49
+ # used to rescue the exceptions for retrying accept_nonblock.
50
+ #
51
+ # By specifying a keyword argument *exception* to `false`, you can indicate that
52
+ # accept_nonblock should not raise an IO::WaitReadable exception, but return the
53
+ # symbol `:wait_readable` instead.
54
+ #
55
+ # ### See
56
+ # * UNIXServer#accept
57
+ # * Socket#accept
58
+ #
59
+ def accept_nonblock: (?exception: boolish) -> (UNIXSocket | :wait_readable)
60
+
61
+ # <!--
62
+ # rdoc-file=ext/socket/unixserver.c
63
+ # - socket.listen( int ) => 0
64
+ # -->
65
+ # Listens for connections, using the specified `int` as the backlog. A call to
66
+ # *listen* only applies if the `socket` is of type SOCK_STREAM or
67
+ # SOCK_SEQPACKET.
68
+ #
69
+ # ### Parameter
70
+ # * `backlog` - the maximum length of the queue for pending connections.
71
+ #
72
+ # ### Example 1
73
+ # require 'socket'
74
+ # include Socket::Constants
75
+ # socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
76
+ # sockaddr = Socket.pack_sockaddr_in( 2200, 'localhost' )
77
+ # socket.bind( sockaddr )
78
+ # socket.listen( 5 )
79
+ #
80
+ # ### Example 2 (listening on an arbitrary port, unix-based systems only):
81
+ # require 'socket'
82
+ # include Socket::Constants
83
+ # socket = Socket.new( AF_INET, SOCK_STREAM, 0 )
84
+ # socket.listen( 1 )
85
+ #
86
+ # ### Unix-based Exceptions
87
+ # On unix based systems the above will work because a new `sockaddr` struct is
88
+ # created on the address ADDR_ANY, for an arbitrary port number as handed off by
89
+ # the kernel. It will not work on Windows, because Windows requires that the
90
+ # `socket` is bound by calling *bind* before it can *listen*.
91
+ #
92
+ # If the *backlog* amount exceeds the implementation-dependent maximum queue
93
+ # length, the implementation's maximum queue length will be used.
94
+ #
95
+ # On unix-based based systems the following system exceptions may be raised if
96
+ # the call to *listen* fails:
97
+ # * Errno::EBADF - the *socket* argument is not a valid file descriptor
98
+ # * Errno::EDESTADDRREQ - the *socket* is not bound to a local address, and
99
+ # the protocol does not support listening on an unbound socket
100
+ # * Errno::EINVAL - the *socket* is already connected
101
+ # * Errno::ENOTSOCK - the *socket* argument does not refer to a socket
102
+ # * Errno::EOPNOTSUPP - the *socket* protocol does not support listen
103
+ # * Errno::EACCES - the calling process does not have appropriate privileges
104
+ # * Errno::EINVAL - the *socket* has been shut down
105
+ # * Errno::ENOBUFS - insufficient resources are available in the system to
106
+ # complete the call
107
+ #
108
+ # ### Windows Exceptions
109
+ # On Windows systems the following system exceptions may be raised if the call
110
+ # to *listen* fails:
111
+ # * Errno::ENETDOWN - the network is down
112
+ # * Errno::EADDRINUSE - the socket's local address is already in use. This
113
+ # usually occurs during the execution of *bind* but could be delayed if the
114
+ # call to *bind* was to a partially wildcard address (involving ADDR_ANY)
115
+ # and if a specific address needs to be committed at the time of the call to
116
+ # *listen*
117
+ # * Errno::EINPROGRESS - a Windows Sockets 1.1 call is in progress or the
118
+ # service provider is still processing a callback function
119
+ # * Errno::EINVAL - the `socket` has not been bound with a call to *bind*.
120
+ # * Errno::EISCONN - the `socket` is already connected
121
+ # * Errno::EMFILE - no more socket descriptors are available
122
+ # * Errno::ENOBUFS - no buffer space is available
123
+ # * Errno::ENOTSOC - `socket` is not a socket
124
+ # * Errno::EOPNOTSUPP - the referenced `socket` is not a type that supports
125
+ # the *listen* method
126
+ #
127
+ # ### See
128
+ # * listen manual pages on unix-based systems
129
+ # * listen function in Microsoft's Winsock functions reference
130
+ #
131
+ def listen: (Integer backlog) -> void
132
+
133
+ # <!--
134
+ # rdoc-file=ext/socket/unixserver.c
135
+ # - unixserver.sysaccept => file_descriptor
136
+ # -->
137
+ # Accepts a new connection. It returns the new file descriptor which is an
138
+ # integer.
139
+ #
140
+ # UNIXServer.open("/tmp/sock") {|serv|
141
+ # UNIXSocket.open("/tmp/sock") {|c|
142
+ # fd = serv.sysaccept
143
+ # s = IO.new(fd)
144
+ # s.puts "hi"
145
+ # s.close
146
+ # p c.read #=> "hi\n"
147
+ # }
148
+ # }
149
+ #
150
+ def sysaccept: () -> Integer
151
+
152
+ private
153
+
154
+ def __accept_nonblock: (untyped) -> untyped
155
+
156
+ # <!--
157
+ # rdoc-file=ext/socket/unixserver.c
158
+ # - UNIXServer.new(path) => unixserver
159
+ # -->
160
+ # Creates a new UNIX server socket bound to *path*.
161
+ #
162
+ # require 'socket'
163
+ #
164
+ # serv = UNIXServer.new("/tmp/sock")
165
+ # s = serv.accept
166
+ # p s.read
167
+ #
168
+ def initialize: (untyped) -> untyped
169
+ end