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.
- checksums.yaml +7 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/comments.yml +35 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +82 -0
- data/.github/workflows/typecheck.yml +38 -0
- data/.github/workflows/windows.yml +43 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +68 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +1868 -0
- data/COPYING +56 -0
- data/README.md +203 -0
- data/Rakefile +417 -0
- data/Steepfile +44 -0
- data/config.yml +313 -0
- data/core/array.rbs +4062 -0
- data/core/basic_object.rbs +375 -0
- data/core/binding.rbs +150 -0
- data/core/builtin.rbs +277 -0
- data/core/class.rbs +220 -0
- data/core/comparable.rbs +171 -0
- data/core/complex.rbs +786 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +981 -0
- data/core/encoding.rbs +1371 -0
- data/core/enumerable.rbs +2405 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +630 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +673 -0
- data/core/errors.rbs +760 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +550 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2936 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1151 -0
- data/core/gc.rbs +644 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +1861 -0
- data/core/integer.rbs +1413 -0
- data/core/io/buffer.rbs +984 -0
- data/core/io/wait.rbs +70 -0
- data/core/io.rbs +3406 -0
- data/core/kernel.rbs +3096 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +635 -0
- data/core/math.rbs +729 -0
- data/core/method.rbs +386 -0
- data/core/module.rbs +1704 -0
- data/core/nil_class.rbs +209 -0
- data/core/numeric.rbs +818 -0
- data/core/object.rbs +110 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +190 -0
- data/core/proc.rbs +868 -0
- data/core/process.rbs +2296 -0
- data/core/ractor.rbs +1068 -0
- data/core/random.rbs +237 -0
- data/core/range.rbs +1107 -0
- data/core/rational.rbs +531 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/unnamed/argf.rbs +1229 -0
- data/core/rbs/unnamed/env_class.rbs +1209 -0
- data/core/rbs/unnamed/random.rbs +293 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1930 -0
- data/core/ruby_vm.rbs +765 -0
- data/core/rubygems/basic_specification.rbs +6 -0
- data/core/rubygems/config_file.rbs +38 -0
- data/core/rubygems/dependency_installer.rbs +6 -0
- data/core/rubygems/errors.rbs +176 -0
- data/core/rubygems/installer.rbs +15 -0
- data/core/rubygems/path_support.rbs +6 -0
- data/core/rubygems/platform.rbs +7 -0
- data/core/rubygems/request_set.rbs +49 -0
- data/core/rubygems/requirement.rbs +148 -0
- data/core/rubygems/rubygems.rbs +1171 -0
- data/core/rubygems/source_list.rbs +15 -0
- data/core/rubygems/specification.rbs +23 -0
- data/core/rubygems/stream_ui.rbs +5 -0
- data/core/rubygems/uninstaller.rbs +10 -0
- data/core/rubygems/version.rbs +294 -0
- data/core/set.rbs +621 -0
- data/core/signal.rbs +100 -0
- data/core/string.rbs +3583 -0
- data/core/struct.rbs +667 -0
- data/core/symbol.rbs +475 -0
- data/core/thread.rbs +1765 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1762 -0
- data/core/trace_point.rbs +477 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +329 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +106 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +910 -0
- data/docs/tools.md +17 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/extconf.rb +15 -0
- data/ext/rbs_extension/lexer.c +2728 -0
- data/ext/rbs_extension/lexer.h +179 -0
- data/ext/rbs_extension/lexer.re +147 -0
- data/ext/rbs_extension/lexstate.c +175 -0
- data/ext/rbs_extension/location.c +325 -0
- data/ext/rbs_extension/location.h +85 -0
- data/ext/rbs_extension/main.c +33 -0
- data/ext/rbs_extension/parser.c +2973 -0
- data/ext/rbs_extension/parser.h +18 -0
- data/ext/rbs_extension/parserstate.c +397 -0
- data/ext/rbs_extension/parserstate.h +163 -0
- data/ext/rbs_extension/rbs_extension.h +31 -0
- data/ext/rbs_extension/unescape.c +32 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/constants.h +82 -0
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +92 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
- data/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/lib/rbs/annotate.rb +8 -0
- data/lib/rbs/ast/annotation.rb +29 -0
- data/lib/rbs/ast/comment.rb +29 -0
- data/lib/rbs/ast/declarations.rb +467 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/type_param.rb +225 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +67 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +357 -0
- data/lib/rbs/cli.rb +1223 -0
- data/lib/rbs/collection/cleaner.rb +38 -0
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
- data/lib/rbs/collection/config.rb +81 -0
- data/lib/rbs/collection/installer.rb +32 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +258 -0
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/lib/rbs/collection/sources.rb +38 -0
- data/lib/rbs/collection.rb +16 -0
- data/lib/rbs/constant.rb +28 -0
- data/lib/rbs/definition.rb +401 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
- data/lib/rbs/definition_builder/method_builder.rb +254 -0
- data/lib/rbs/definition_builder.rb +845 -0
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +829 -0
- data/lib/rbs/environment_loader.rb +173 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +645 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +138 -0
- data/lib/rbs/locator.rb +243 -0
- data/lib/rbs/method_type.rb +143 -0
- data/lib/rbs/namespace.rb +125 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +114 -0
- data/lib/rbs/prototype/helpers.rb +140 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +840 -0
- data/lib/rbs/prototype/rbi.rb +641 -0
- data/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
- data/lib/rbs/prototype/runtime.rb +667 -0
- data/lib/rbs/repository.rb +127 -0
- data/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/lib/rbs/resolver/type_name_resolver.rb +91 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +80 -0
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +212 -0
- data/lib/rbs/test/observer.rb +19 -0
- data/lib/rbs/test/setup.rb +84 -0
- data/lib/rbs/test/setup_helper.rb +50 -0
- data/lib/rbs/test/tester.rb +167 -0
- data/lib/rbs/test/type_check.rb +435 -0
- data/lib/rbs/test.rb +112 -0
- data/lib/rbs/type_alias_dependency.rb +100 -0
- data/lib/rbs/type_alias_regularity.rb +126 -0
- data/lib/rbs/type_name.rb +109 -0
- data/lib/rbs/types.rb +1596 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +347 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +186 -0
- data/lib/rbs/variance_calculator.rb +189 -0
- data/lib/rbs/vendorer.rb +71 -0
- data/lib/rbs/version.rb +5 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +94 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs-relaxed.gemspec +48 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +326 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +266 -0
- data/schema/methodType.json +50 -0
- data/schema/typeParam.json +36 -0
- data/schema/types.json +317 -0
- data/sig/ancestor_builder.rbs +163 -0
- data/sig/ancestor_graph.rbs +60 -0
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/annotation.rbs +27 -0
- data/sig/buffer.rbs +32 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +21 -0
- data/sig/cli/validate.rbs +43 -0
- data/sig/cli.rbs +87 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +46 -0
- data/sig/collection/installer.rbs +17 -0
- data/sig/collection/sources.rbs +214 -0
- data/sig/collection.rbs +4 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/declarations.rbs +267 -0
- data/sig/definition.rbs +173 -0
- data/sig/definition_builder.rbs +165 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment.rbs +279 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +405 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +110 -0
- data/sig/locator.rbs +58 -0
- data/sig/manifest.yaml +7 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +84 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +146 -0
- data/sig/parser.rbs +100 -0
- data/sig/prototype/helpers.rbs +27 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +96 -0
- data/sig/prototype/rbi.rbs +75 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +21 -0
- data/sig/rdoc/rbs.rbs +67 -0
- data/sig/repository.rbs +85 -0
- data/sig/resolver/constant_resolver.rbs +92 -0
- data/sig/resolver/context.rbs +34 -0
- data/sig/resolver/type_name_resolver.rbs +35 -0
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +41 -0
- data/sig/substitution.rbs +48 -0
- data/sig/subtractor.rbs +37 -0
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/type_alias_dependency.rbs +53 -0
- data/sig/type_alias_regularity.rbs +98 -0
- data/sig/type_param.rbs +110 -0
- data/sig/typename.rbs +79 -0
- data/sig/types.rbs +579 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +30 -0
- data/sig/unit_test/type_assertions.rbs +196 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/util.rbs +9 -0
- data/sig/validator.rbs +63 -0
- data/sig/variance_calculator.rbs +87 -0
- data/sig/vendorer.rbs +51 -0
- data/sig/version.rbs +3 -0
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +127 -0
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +795 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +355 -0
- data/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +1285 -0
- data/stdlib/cgi/0/manifest.yaml +3 -0
- data/stdlib/coverage/0/coverage.rbs +263 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1585 -0
- data/stdlib/date/0/date_time.rbs +616 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +184 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
- data/stdlib/digest/0/digest.rbs +577 -0
- data/stdlib/erb/0/erb.rbs +532 -0
- data/stdlib/etc/0/etc.rbs +865 -0
- data/stdlib/fileutils/0/fileutils.rbs +1734 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +268 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
- data/stdlib/json/0/json.rbs +1916 -0
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +45 -0
- data/stdlib/logger/0/log_device.rbs +100 -0
- data/stdlib/logger/0/logger.rbs +796 -0
- data/stdlib/logger/0/manifest.yaml +2 -0
- data/stdlib/logger/0/period.rbs +17 -0
- data/stdlib/logger/0/severity.rbs +34 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/stdlib/minitest/0/minitest.rbs +115 -0
- data/stdlib/monitor/0/monitor.rbs +363 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/stdlib/net-http/0/manifest.yaml +3 -0
- data/stdlib/net-http/0/net-http.rbs +5552 -0
- data/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/stdlib/nkf/0/nkf.rbs +402 -0
- data/stdlib/objspace/0/objspace.rbs +487 -0
- data/stdlib/observable/0/observable.rbs +217 -0
- data/stdlib/open-uri/0/manifest.yaml +4 -0
- data/stdlib/open-uri/0/open-uri.rbs +393 -0
- data/stdlib/open3/0/open3.rbs +147 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12113 -0
- data/stdlib/optparse/0/optparse.rbs +1725 -0
- data/stdlib/pathname/0/pathname.rbs +1406 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +603 -0
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/dbm.rbs +237 -0
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/psych/0/store.rbs +59 -0
- data/stdlib/pty/0/pty.rbs +237 -0
- data/stdlib/rdoc/0/code_object.rbs +51 -0
- data/stdlib/rdoc/0/comment.rbs +59 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +391 -0
- data/stdlib/rdoc/0/ri.rbs +17 -0
- data/stdlib/rdoc/0/store.rbs +48 -0
- data/stdlib/rdoc/0/top_level.rbs +97 -0
- data/stdlib/resolv/0/manifest.yaml +3 -0
- data/stdlib/resolv/0/resolv.rbs +1830 -0
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +62 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +131 -0
- data/stdlib/socket/0/addrinfo.rbs +666 -0
- data/stdlib/socket/0/basic_socket.rbs +590 -0
- data/stdlib/socket/0/constants.rbs +2295 -0
- data/stdlib/socket/0/ip_socket.rbs +92 -0
- data/stdlib/socket/0/socket.rbs +4157 -0
- data/stdlib/socket/0/socket_error.rbs +5 -0
- data/stdlib/socket/0/tcp_server.rbs +192 -0
- data/stdlib/socket/0/tcp_socket.rbs +79 -0
- data/stdlib/socket/0/udp_socket.rbs +133 -0
- data/stdlib/socket/0/unix_server.rbs +169 -0
- data/stdlib/socket/0/unix_socket.rbs +172 -0
- data/stdlib/stringio/0/stringio.rbs +567 -0
- data/stdlib/strscan/0/string_scanner.rbs +1627 -0
- data/stdlib/tempfile/0/tempfile.rbs +479 -0
- data/stdlib/time/0/time.rbs +432 -0
- data/stdlib/timeout/0/timeout.rbs +81 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +5 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +409 -0
- data/stdlib/uri/0/common.rbs +582 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1108 -0
- data/stdlib/uri/0/http.rbs +104 -0
- data/stdlib/uri/0/https.rbs +14 -0
- data/stdlib/uri/0/ldap.rbs +230 -0
- data/stdlib/uri/0/ldaps.rbs +14 -0
- data/stdlib/uri/0/mailto.rbs +92 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/stdlib/uri/0/ws.rbs +13 -0
- data/stdlib/uri/0/wss.rbs +9 -0
- data/stdlib/yaml/0/manifest.yaml +2 -0
- data/stdlib/yaml/0/yaml.rbs +1 -0
- data/stdlib/zlib/0/buf_error.rbs +10 -0
- data/stdlib/zlib/0/data_error.rbs +10 -0
- data/stdlib/zlib/0/deflate.rbs +210 -0
- data/stdlib/zlib/0/error.rbs +20 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/stdlib/zlib/0/gzip_writer.rbs +166 -0
- data/stdlib/zlib/0/inflate.rbs +180 -0
- data/stdlib/zlib/0/mem_error.rbs +10 -0
- data/stdlib/zlib/0/need_dict.rbs +13 -0
- data/stdlib/zlib/0/stream_end.rbs +11 -0
- data/stdlib/zlib/0/stream_error.rbs +11 -0
- data/stdlib/zlib/0/version_error.rbs +11 -0
- data/stdlib/zlib/0/zlib.rbs +449 -0
- data/stdlib/zlib/0/zstream.rbs +200 -0
- metadata +532 -0
@@ -0,0 +1,590 @@
|
|
1
|
+
# <!-- rdoc-file=ext/socket/basicsocket.c -->
|
2
|
+
# BasicSocket is the super class for all the Socket classes.
|
3
|
+
#
|
4
|
+
class BasicSocket < IO
|
5
|
+
# <!--
|
6
|
+
# rdoc-file=ext/socket/basicsocket.c
|
7
|
+
# - BasicSocket.do_not_reverse_lookup => true or false
|
8
|
+
# -->
|
9
|
+
# Gets the global do_not_reverse_lookup flag.
|
10
|
+
#
|
11
|
+
# BasicSocket.do_not_reverse_lookup #=> false
|
12
|
+
#
|
13
|
+
def self.do_not_reverse_lookup: () -> bool
|
14
|
+
|
15
|
+
# <!--
|
16
|
+
# rdoc-file=ext/socket/basicsocket.c
|
17
|
+
# - BasicSocket.do_not_reverse_lookup = bool
|
18
|
+
# -->
|
19
|
+
# Sets the global do_not_reverse_lookup flag.
|
20
|
+
#
|
21
|
+
# The flag is used for initial value of do_not_reverse_lookup for each socket.
|
22
|
+
#
|
23
|
+
# s1 = TCPSocket.new("localhost", 80)
|
24
|
+
# p s1.do_not_reverse_lookup #=> true
|
25
|
+
# BasicSocket.do_not_reverse_lookup = false
|
26
|
+
# s2 = TCPSocket.new("localhost", 80)
|
27
|
+
# p s2.do_not_reverse_lookup #=> false
|
28
|
+
# p s1.do_not_reverse_lookup #=> true
|
29
|
+
#
|
30
|
+
def self.do_not_reverse_lookup=: (boolish) -> void
|
31
|
+
|
32
|
+
# <!--
|
33
|
+
# rdoc-file=ext/socket/basicsocket.c
|
34
|
+
# - BasicSocket.for_fd(fd) => basicsocket
|
35
|
+
# -->
|
36
|
+
# Returns a socket object which contains the file descriptor, *fd*.
|
37
|
+
#
|
38
|
+
# # If invoked by inetd, STDIN/STDOUT/STDERR is a socket.
|
39
|
+
# STDIN_SOCK = Socket.for_fd(STDIN.fileno)
|
40
|
+
# p STDIN_SOCK.remote_address
|
41
|
+
#
|
42
|
+
def self.for_fd: (Integer fileno) -> BasicSocket
|
43
|
+
|
44
|
+
# <!--
|
45
|
+
# rdoc-file=ext/socket/basicsocket.c
|
46
|
+
# - basicsocket.close_read => nil
|
47
|
+
# -->
|
48
|
+
# Disallows further read using shutdown system call.
|
49
|
+
#
|
50
|
+
# s1, s2 = UNIXSocket.pair
|
51
|
+
# s1.close_read
|
52
|
+
# s2.puts #=> Broken pipe (Errno::EPIPE)
|
53
|
+
#
|
54
|
+
def close_read: () -> void
|
55
|
+
|
56
|
+
# <!--
|
57
|
+
# rdoc-file=ext/socket/basicsocket.c
|
58
|
+
# - basicsocket.close_write => nil
|
59
|
+
# -->
|
60
|
+
# Disallows further write using shutdown system call.
|
61
|
+
#
|
62
|
+
# UNIXSocket.pair {|s1, s2|
|
63
|
+
# s1.print "ping"
|
64
|
+
# s1.close_write
|
65
|
+
# p s2.read #=> "ping"
|
66
|
+
# s2.print "pong"
|
67
|
+
# s2.close
|
68
|
+
# p s1.read #=> "pong"
|
69
|
+
# }
|
70
|
+
#
|
71
|
+
def close_write: () -> void
|
72
|
+
|
73
|
+
# <!--
|
74
|
+
# rdoc-file=ext/socket/lib/socket.rb
|
75
|
+
# - connect_address()
|
76
|
+
# -->
|
77
|
+
# Returns an address of the socket suitable for connect in the local machine.
|
78
|
+
#
|
79
|
+
# This method returns *self*.local_address, except following condition.
|
80
|
+
#
|
81
|
+
# * IPv4 unspecified address (0.0.0.0) is replaced by IPv4 loopback address
|
82
|
+
# (127.0.0.1).
|
83
|
+
# * IPv6 unspecified address (::) is replaced by IPv6 loopback address (::1).
|
84
|
+
#
|
85
|
+
# If the local address is not suitable for connect, SocketError is raised. IPv4
|
86
|
+
# and IPv6 address which port is 0 is not suitable for connect. Unix domain
|
87
|
+
# socket which has no path is not suitable for connect.
|
88
|
+
#
|
89
|
+
# Addrinfo.tcp("0.0.0.0", 0).listen {|serv|
|
90
|
+
# p serv.connect_address #=> #<Addrinfo: 127.0.0.1:53660 TCP>
|
91
|
+
# serv.connect_address.connect {|c|
|
92
|
+
# s, _ = serv.accept
|
93
|
+
# p [c, s] #=> [#<Socket:fd 4>, #<Socket:fd 6>]
|
94
|
+
# }
|
95
|
+
# }
|
96
|
+
#
|
97
|
+
def connect_address: () -> Addrinfo
|
98
|
+
|
99
|
+
# <!--
|
100
|
+
# rdoc-file=ext/socket/basicsocket.c
|
101
|
+
# - basicsocket.do_not_reverse_lookup => true or false
|
102
|
+
# -->
|
103
|
+
# Gets the do_not_reverse_lookup flag of *basicsocket*.
|
104
|
+
#
|
105
|
+
# require 'socket'
|
106
|
+
#
|
107
|
+
# BasicSocket.do_not_reverse_lookup = false
|
108
|
+
# TCPSocket.open("www.ruby-lang.org", 80) {|sock|
|
109
|
+
# p sock.do_not_reverse_lookup #=> false
|
110
|
+
# }
|
111
|
+
# BasicSocket.do_not_reverse_lookup = true
|
112
|
+
# TCPSocket.open("www.ruby-lang.org", 80) {|sock|
|
113
|
+
# p sock.do_not_reverse_lookup #=> true
|
114
|
+
# }
|
115
|
+
#
|
116
|
+
def do_not_reverse_lookup: () -> bool
|
117
|
+
|
118
|
+
# <!--
|
119
|
+
# rdoc-file=ext/socket/basicsocket.c
|
120
|
+
# - basicsocket.do_not_reverse_lookup = bool
|
121
|
+
# -->
|
122
|
+
# Sets the do_not_reverse_lookup flag of *basicsocket*.
|
123
|
+
#
|
124
|
+
# TCPSocket.open("www.ruby-lang.org", 80) {|sock|
|
125
|
+
# p sock.do_not_reverse_lookup #=> true
|
126
|
+
# p sock.peeraddr #=> ["AF_INET", 80, "221.186.184.68", "221.186.184.68"]
|
127
|
+
# sock.do_not_reverse_lookup = false
|
128
|
+
# p sock.peeraddr #=> ["AF_INET", 80, "carbon.ruby-lang.org", "54.163.249.195"]
|
129
|
+
# }
|
130
|
+
#
|
131
|
+
def do_not_reverse_lookup=: (boolish) -> void
|
132
|
+
|
133
|
+
# <!--
|
134
|
+
# rdoc-file=ext/socket/basicsocket.c
|
135
|
+
# - basicsocket.getpeereid => [euid, egid]
|
136
|
+
# -->
|
137
|
+
# Returns the user and group on the peer of the UNIX socket. The result is a two
|
138
|
+
# element array which contains the effective uid and the effective gid.
|
139
|
+
#
|
140
|
+
# Socket.unix_server_loop("/tmp/sock") {|s|
|
141
|
+
# begin
|
142
|
+
# euid, egid = s.getpeereid
|
143
|
+
#
|
144
|
+
# # Check the connected client is myself or not.
|
145
|
+
# next if euid != Process.uid
|
146
|
+
#
|
147
|
+
# # do something about my resource.
|
148
|
+
#
|
149
|
+
# ensure
|
150
|
+
# s.close
|
151
|
+
# end
|
152
|
+
# }
|
153
|
+
#
|
154
|
+
def getpeereid: () -> [ Integer, Integer ]
|
155
|
+
|
156
|
+
# <!--
|
157
|
+
# rdoc-file=ext/socket/basicsocket.c
|
158
|
+
# - basicsocket.getpeername => sockaddr
|
159
|
+
# -->
|
160
|
+
# Returns the remote address of the socket as a sockaddr string.
|
161
|
+
#
|
162
|
+
# TCPServer.open("127.0.0.1", 1440) {|serv|
|
163
|
+
# c = TCPSocket.new("127.0.0.1", 1440)
|
164
|
+
# s = serv.accept
|
165
|
+
# p s.getpeername #=> "\x02\x00\x82u\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
|
166
|
+
# }
|
167
|
+
#
|
168
|
+
# If Addrinfo object is preferred over the binary string, use
|
169
|
+
# BasicSocket#remote_address.
|
170
|
+
#
|
171
|
+
def getpeername: () -> String
|
172
|
+
|
173
|
+
# <!--
|
174
|
+
# rdoc-file=ext/socket/basicsocket.c
|
175
|
+
# - basicsocket.getsockname => sockaddr
|
176
|
+
# -->
|
177
|
+
# Returns the local address of the socket as a sockaddr string.
|
178
|
+
#
|
179
|
+
# TCPServer.open("127.0.0.1", 15120) {|serv|
|
180
|
+
# p serv.getsockname #=> "\x02\x00;\x10\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"
|
181
|
+
# }
|
182
|
+
#
|
183
|
+
# If Addrinfo object is preferred over the binary string, use
|
184
|
+
# BasicSocket#local_address.
|
185
|
+
#
|
186
|
+
def getsockname: () -> String
|
187
|
+
|
188
|
+
# <!--
|
189
|
+
# rdoc-file=ext/socket/basicsocket.c
|
190
|
+
# - getsockopt(level, optname) => socketoption
|
191
|
+
# -->
|
192
|
+
# Gets a socket option. These are protocol and system specific, see your local
|
193
|
+
# system documentation for details. The option is returned as a Socket::Option
|
194
|
+
# object.
|
195
|
+
#
|
196
|
+
# ### Parameters
|
197
|
+
# * `level` is an integer, usually one of the SOL_ constants such as
|
198
|
+
# Socket::SOL_SOCKET, or a protocol level. A string or symbol of the name,
|
199
|
+
# possibly without prefix, is also accepted.
|
200
|
+
# * `optname` is an integer, usually one of the SO_ constants, such as
|
201
|
+
# Socket::SO_REUSEADDR. A string or symbol of the name, possibly without
|
202
|
+
# prefix, is also accepted.
|
203
|
+
#
|
204
|
+
# ### Examples
|
205
|
+
#
|
206
|
+
# Some socket options are integers with boolean values, in this case #getsockopt
|
207
|
+
# could be called like this:
|
208
|
+
#
|
209
|
+
# reuseaddr = sock.getsockopt(:SOCKET, :REUSEADDR).bool
|
210
|
+
#
|
211
|
+
# optval = sock.getsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR)
|
212
|
+
# optval = optval.unpack "i"
|
213
|
+
# reuseaddr = optval[0] == 0 ? false : true
|
214
|
+
#
|
215
|
+
# Some socket options are integers with numeric values, in this case #getsockopt
|
216
|
+
# could be called like this:
|
217
|
+
#
|
218
|
+
# ipttl = sock.getsockopt(:IP, :TTL).int
|
219
|
+
#
|
220
|
+
# optval = sock.getsockopt(Socket::IPPROTO_IP, Socket::IP_TTL)
|
221
|
+
# ipttl = optval.unpack1("i")
|
222
|
+
#
|
223
|
+
# Option values may be structs. Decoding them can be complex as it involves
|
224
|
+
# examining your system headers to determine the correct definition. An example
|
225
|
+
# is a +struct linger+, which may be defined in your system headers as:
|
226
|
+
# struct linger {
|
227
|
+
# int l_onoff;
|
228
|
+
# int l_linger;
|
229
|
+
# };
|
230
|
+
#
|
231
|
+
# In this case #getsockopt could be called like this:
|
232
|
+
#
|
233
|
+
# # Socket::Option knows linger structure.
|
234
|
+
# onoff, linger = sock.getsockopt(:SOCKET, :LINGER).linger
|
235
|
+
#
|
236
|
+
# optval = sock.getsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER)
|
237
|
+
# onoff, linger = optval.unpack "ii"
|
238
|
+
# onoff = onoff == 0 ? false : true
|
239
|
+
#
|
240
|
+
def getsockopt: (Symbol | Integer, Symbol | Integer) -> (Integer | boolish | String)
|
241
|
+
|
242
|
+
# <!--
|
243
|
+
# rdoc-file=ext/socket/basicsocket.c
|
244
|
+
# - bsock.local_address => addrinfo
|
245
|
+
# -->
|
246
|
+
# Returns an Addrinfo object for local address obtained by getsockname.
|
247
|
+
#
|
248
|
+
# Note that addrinfo.protocol is filled by 0.
|
249
|
+
#
|
250
|
+
# TCPSocket.open("www.ruby-lang.org", 80) {|s|
|
251
|
+
# p s.local_address #=> #<Addrinfo: 192.168.0.129:36873 TCP>
|
252
|
+
# }
|
253
|
+
#
|
254
|
+
# TCPServer.open("127.0.0.1", 1512) {|serv|
|
255
|
+
# p serv.local_address #=> #<Addrinfo: 127.0.0.1:1512 TCP>
|
256
|
+
# }
|
257
|
+
#
|
258
|
+
def local_address: () -> Addrinfo
|
259
|
+
|
260
|
+
# <!--
|
261
|
+
# rdoc-file=ext/socket/basicsocket.c
|
262
|
+
# - basicsocket.recv(maxlen[, flags[, outbuf]]) => mesg
|
263
|
+
# -->
|
264
|
+
# Receives a message.
|
265
|
+
#
|
266
|
+
# *maxlen* is the maximum number of bytes to receive.
|
267
|
+
#
|
268
|
+
# *flags* should be a bitwise OR of Socket::MSG_* constants.
|
269
|
+
#
|
270
|
+
# *outbuf* will contain only the received data after the method call even if it
|
271
|
+
# is not empty at the beginning.
|
272
|
+
#
|
273
|
+
# UNIXSocket.pair {|s1, s2|
|
274
|
+
# s1.puts "Hello World"
|
275
|
+
# p s2.recv(4) #=> "Hell"
|
276
|
+
# p s2.recv(4, Socket::MSG_PEEK) #=> "o Wo"
|
277
|
+
# p s2.recv(4) #=> "o Wo"
|
278
|
+
# p s2.recv(10) #=> "rld\n"
|
279
|
+
# }
|
280
|
+
#
|
281
|
+
def recv: (Integer maxlen, ?Integer flags, ?String outbuf) -> String
|
282
|
+
| (Integer maxlen, ?String outbuf) -> String
|
283
|
+
|
284
|
+
# <!--
|
285
|
+
# rdoc-file=ext/socket/lib/socket.rb
|
286
|
+
# - basicsocket.recv_nonblock(maxlen [, flags [, buf [, options ]]]) => mesg
|
287
|
+
# -->
|
288
|
+
# Receives up to *maxlen* bytes from `socket` using recvfrom(2) after O_NONBLOCK
|
289
|
+
# is set for the underlying file descriptor. *flags* is zero or more of the
|
290
|
+
# `MSG_` options. The result, *mesg*, is the data received.
|
291
|
+
#
|
292
|
+
# When recvfrom(2) returns 0, Socket#recv_nonblock returns nil. In most cases it
|
293
|
+
# means the connection was closed, but for UDP connections it may mean an empty
|
294
|
+
# packet was received, as the underlying API makes it impossible to distinguish
|
295
|
+
# these two cases.
|
296
|
+
#
|
297
|
+
# ### Parameters
|
298
|
+
# * `maxlen` - the number of bytes to receive from the socket
|
299
|
+
# * `flags` - zero or more of the `MSG_` options
|
300
|
+
# * `buf` - destination String buffer
|
301
|
+
# * `options` - keyword hash, supporting `exception: false`
|
302
|
+
#
|
303
|
+
# ### Example
|
304
|
+
# serv = TCPServer.new("127.0.0.1", 0)
|
305
|
+
# af, port, host, addr = serv.addr
|
306
|
+
# c = TCPSocket.new(addr, port)
|
307
|
+
# s = serv.accept
|
308
|
+
# c.send "aaa", 0
|
309
|
+
# begin # emulate blocking recv.
|
310
|
+
# p s.recv_nonblock(10) #=> "aaa"
|
311
|
+
# rescue IO::WaitReadable
|
312
|
+
# IO.select([s])
|
313
|
+
# retry
|
314
|
+
# end
|
315
|
+
#
|
316
|
+
# Refer to Socket#recvfrom for the exceptions that may be thrown if the call to
|
317
|
+
# *recv_nonblock* fails.
|
318
|
+
#
|
319
|
+
# BasicSocket#recv_nonblock may raise any error corresponding to recvfrom(2)
|
320
|
+
# failure, including Errno::EWOULDBLOCK.
|
321
|
+
#
|
322
|
+
# If the exception is Errno::EWOULDBLOCK or Errno::EAGAIN, it is extended by
|
323
|
+
# IO::WaitReadable. So IO::WaitReadable can be used to rescue the exceptions for
|
324
|
+
# retrying recv_nonblock.
|
325
|
+
#
|
326
|
+
# By specifying a keyword argument *exception* to `false`, you can indicate that
|
327
|
+
# recv_nonblock should not raise an IO::WaitReadable exception, but return the
|
328
|
+
# symbol `:wait_readable` instead.
|
329
|
+
#
|
330
|
+
# ### See
|
331
|
+
# * Socket#recvfrom
|
332
|
+
#
|
333
|
+
def recv_nonblock: (Integer maxlen, ?Integer flags, ?String buf, ?exception: boolish) -> (String | :wait_readable)
|
334
|
+
|
335
|
+
# <!--
|
336
|
+
# rdoc-file=ext/socket/lib/socket.rb
|
337
|
+
# - basicsocket.recvmsg(maxmesglen=nil, flags=0, maxcontrollen=nil, opts={}) => [mesg, sender_addrinfo, rflags, *controls]
|
338
|
+
# -->
|
339
|
+
# recvmsg receives a message using recvmsg(2) system call in blocking manner.
|
340
|
+
#
|
341
|
+
# *maxmesglen* is the maximum length of mesg to receive.
|
342
|
+
#
|
343
|
+
# *flags* is bitwise OR of MSG_* constants such as Socket::MSG_PEEK.
|
344
|
+
#
|
345
|
+
# *maxcontrollen* is the maximum length of controls (ancillary data) to receive.
|
346
|
+
#
|
347
|
+
# *opts* is option hash. Currently :scm_rights=>bool is the only option.
|
348
|
+
#
|
349
|
+
# :scm_rights option specifies that application expects SCM_RIGHTS control
|
350
|
+
# message. If the value is nil or false, application don't expects SCM_RIGHTS
|
351
|
+
# control message. In this case, recvmsg closes the passed file descriptors
|
352
|
+
# immediately. This is the default behavior.
|
353
|
+
#
|
354
|
+
# If :scm_rights value is neither nil nor false, application expects SCM_RIGHTS
|
355
|
+
# control message. In this case, recvmsg creates IO objects for each file
|
356
|
+
# descriptors for Socket::AncillaryData#unix_rights method.
|
357
|
+
#
|
358
|
+
# The return value is 4-elements array.
|
359
|
+
#
|
360
|
+
# *mesg* is a string of the received message.
|
361
|
+
#
|
362
|
+
# *sender_addrinfo* is a sender socket address for connection-less socket. It is
|
363
|
+
# an Addrinfo object. For connection-oriented socket such as TCP,
|
364
|
+
# sender_addrinfo is platform dependent.
|
365
|
+
#
|
366
|
+
# *rflags* is a flags on the received message which is bitwise OR of MSG_*
|
367
|
+
# constants such as Socket::MSG_TRUNC. It will be nil if the system uses 4.3BSD
|
368
|
+
# style old recvmsg system call.
|
369
|
+
#
|
370
|
+
# *controls* is ancillary data which is an array of Socket::AncillaryData
|
371
|
+
# objects such as:
|
372
|
+
#
|
373
|
+
# #<Socket::AncillaryData: AF_UNIX SOCKET RIGHTS 7>
|
374
|
+
#
|
375
|
+
# *maxmesglen* and *maxcontrollen* can be nil. In that case, the buffer will be
|
376
|
+
# grown until the message is not truncated. Internally, MSG_PEEK is used. Buffer
|
377
|
+
# full and MSG_CTRUNC are checked for truncation.
|
378
|
+
#
|
379
|
+
# recvmsg can be used to implement recv_io as follows:
|
380
|
+
#
|
381
|
+
# mesg, sender_sockaddr, rflags, *controls = sock.recvmsg(:scm_rights=>true)
|
382
|
+
# controls.each {|ancdata|
|
383
|
+
# if ancdata.cmsg_is?(:SOCKET, :RIGHTS)
|
384
|
+
# return ancdata.unix_rights[0]
|
385
|
+
# end
|
386
|
+
# }
|
387
|
+
#
|
388
|
+
def recvmsg: (?Integer dlen, ?Integer flags, ?Integer clen, ?scm_rights: boolish) -> [ String, Addrinfo, Integer?, Array[Socket::AncillaryData] ]
|
389
|
+
|
390
|
+
# <!--
|
391
|
+
# rdoc-file=ext/socket/lib/socket.rb
|
392
|
+
# - basicsocket.recvmsg_nonblock(maxdatalen=nil, flags=0, maxcontrollen=nil, opts={}) => [data, sender_addrinfo, rflags, *controls]
|
393
|
+
# -->
|
394
|
+
# recvmsg receives a message using recvmsg(2) system call in non-blocking
|
395
|
+
# manner.
|
396
|
+
#
|
397
|
+
# It is similar to BasicSocket#recvmsg but non-blocking flag is set before the
|
398
|
+
# system call and it doesn't retry the system call.
|
399
|
+
#
|
400
|
+
# By specifying a keyword argument *exception* to `false`, you can indicate that
|
401
|
+
# recvmsg_nonblock should not raise an IO::WaitReadable exception, but return
|
402
|
+
# the symbol `:wait_readable` instead.
|
403
|
+
#
|
404
|
+
def recvmsg_nonblock: (?Integer dlen, ?Integer flags, ?Integer clen, ?exception: boolish, ?scm_rights: boolish) -> ([ String, Addrinfo, Integer?, Array[Socket::AncillaryData] ] | :wait_readable)
|
405
|
+
|
406
|
+
# <!--
|
407
|
+
# rdoc-file=ext/socket/basicsocket.c
|
408
|
+
# - bsock.remote_address => addrinfo
|
409
|
+
# -->
|
410
|
+
# Returns an Addrinfo object for remote address obtained by getpeername.
|
411
|
+
#
|
412
|
+
# Note that addrinfo.protocol is filled by 0.
|
413
|
+
#
|
414
|
+
# TCPSocket.open("www.ruby-lang.org", 80) {|s|
|
415
|
+
# p s.remote_address #=> #<Addrinfo: 221.186.184.68:80 TCP>
|
416
|
+
# }
|
417
|
+
#
|
418
|
+
# TCPServer.open("127.0.0.1", 1728) {|serv|
|
419
|
+
# c = TCPSocket.new("127.0.0.1", 1728)
|
420
|
+
# s = serv.accept
|
421
|
+
# p s.remote_address #=> #<Addrinfo: 127.0.0.1:36504 TCP>
|
422
|
+
# }
|
423
|
+
#
|
424
|
+
def remote_address: () -> Addrinfo
|
425
|
+
|
426
|
+
# <!--
|
427
|
+
# rdoc-file=ext/socket/basicsocket.c
|
428
|
+
# - basicsocket.send(mesg, flags [, dest_sockaddr]) => numbytes_sent
|
429
|
+
# -->
|
430
|
+
# send *mesg* via *basicsocket*.
|
431
|
+
#
|
432
|
+
# *mesg* should be a string.
|
433
|
+
#
|
434
|
+
# *flags* should be a bitwise OR of Socket::MSG_* constants.
|
435
|
+
#
|
436
|
+
# *dest_sockaddr* should be a packed sockaddr string or an addrinfo.
|
437
|
+
#
|
438
|
+
# TCPSocket.open("localhost", 80) {|s|
|
439
|
+
# s.send "GET / HTTP/1.0\r\n\r\n", 0
|
440
|
+
# p s.read
|
441
|
+
# }
|
442
|
+
#
|
443
|
+
def send: (String msg, ?Integer flags, ?Addrinfo | String dest_sockaddr) -> void
|
444
|
+
|
445
|
+
# <!--
|
446
|
+
# rdoc-file=ext/socket/lib/socket.rb
|
447
|
+
# - basicsocket.sendmsg(mesg, flags=0, dest_sockaddr=nil, *controls) => numbytes_sent
|
448
|
+
# -->
|
449
|
+
# sendmsg sends a message using sendmsg(2) system call in blocking manner.
|
450
|
+
#
|
451
|
+
# *mesg* is a string to send.
|
452
|
+
#
|
453
|
+
# *flags* is bitwise OR of MSG_* constants such as Socket::MSG_OOB.
|
454
|
+
#
|
455
|
+
# *dest_sockaddr* is a destination socket address for connection-less socket. It
|
456
|
+
# should be a sockaddr such as a result of Socket.sockaddr_in. An Addrinfo
|
457
|
+
# object can be used too.
|
458
|
+
#
|
459
|
+
# *controls* is a list of ancillary data. The element of *controls* should be
|
460
|
+
# Socket::AncillaryData or 3-elements array. The 3-element array should contains
|
461
|
+
# cmsg_level, cmsg_type and data.
|
462
|
+
#
|
463
|
+
# The return value, *numbytes_sent* is an integer which is the number of bytes
|
464
|
+
# sent.
|
465
|
+
#
|
466
|
+
# sendmsg can be used to implement send_io as follows:
|
467
|
+
#
|
468
|
+
# # use Socket::AncillaryData.
|
469
|
+
# ancdata = Socket::AncillaryData.int(:UNIX, :SOCKET, :RIGHTS, io.fileno)
|
470
|
+
# sock.sendmsg("a", 0, nil, ancdata)
|
471
|
+
#
|
472
|
+
# # use 3-element array.
|
473
|
+
# ancdata = [:SOCKET, :RIGHTS, [io.fileno].pack("i!")]
|
474
|
+
# sock.sendmsg("\0", 0, nil, ancdata)
|
475
|
+
#
|
476
|
+
def sendmsg: (String mesg, ?Integer flags, ?Addrinfo | String dest_sockaddr, *Socket::AncillaryData controls) -> Integer
|
477
|
+
|
478
|
+
# <!--
|
479
|
+
# rdoc-file=ext/socket/lib/socket.rb
|
480
|
+
# - basicsocket.sendmsg_nonblock(mesg, flags=0, dest_sockaddr=nil, *controls, opts={}) => numbytes_sent
|
481
|
+
# -->
|
482
|
+
# sendmsg_nonblock sends a message using sendmsg(2) system call in non-blocking
|
483
|
+
# manner.
|
484
|
+
#
|
485
|
+
# It is similar to BasicSocket#sendmsg but the non-blocking flag is set before
|
486
|
+
# the system call and it doesn't retry the system call.
|
487
|
+
#
|
488
|
+
# By specifying a keyword argument *exception* to `false`, you can indicate that
|
489
|
+
# sendmsg_nonblock should not raise an IO::WaitWritable exception, but return
|
490
|
+
# the symbol `:wait_writable` instead.
|
491
|
+
#
|
492
|
+
def sendmsg_nonblock: (String mesg, ?Integer flags, ?Addrinfo | String dest_sockaddr, *Socket::AncillaryData controls, ?exception: boolish) -> (Integer | :wait_writable)
|
493
|
+
|
494
|
+
# <!--
|
495
|
+
# rdoc-file=ext/socket/basicsocket.c
|
496
|
+
# - setsockopt(level, optname, optval)
|
497
|
+
# - setsockopt(socketoption)
|
498
|
+
# -->
|
499
|
+
# Sets a socket option. These are protocol and system specific, see your local
|
500
|
+
# system documentation for details.
|
501
|
+
#
|
502
|
+
# ### Parameters
|
503
|
+
# * `level` is an integer, usually one of the SOL_ constants such as
|
504
|
+
# Socket::SOL_SOCKET, or a protocol level. A string or symbol of the name,
|
505
|
+
# possibly without prefix, is also accepted.
|
506
|
+
# * `optname` is an integer, usually one of the SO_ constants, such as
|
507
|
+
# Socket::SO_REUSEADDR. A string or symbol of the name, possibly without
|
508
|
+
# prefix, is also accepted.
|
509
|
+
# * `optval` is the value of the option, it is passed to the underlying
|
510
|
+
# setsockopt() as a pointer to a certain number of bytes. How this is done
|
511
|
+
# depends on the type:
|
512
|
+
# * Integer: value is assigned to an int, and a pointer to the int is
|
513
|
+
# passed, with length of sizeof(int).
|
514
|
+
# * true or false: 1 or 0 (respectively) is assigned to an int, and the
|
515
|
+
# int is passed as for an Integer. Note that `false` must be passed, not
|
516
|
+
# `nil`.
|
517
|
+
# * String: the string's data and length is passed to the socket.
|
518
|
+
# * `socketoption` is an instance of Socket::Option
|
519
|
+
#
|
520
|
+
# ### Examples
|
521
|
+
#
|
522
|
+
# Some socket options are integers with boolean values, in this case #setsockopt
|
523
|
+
# could be called like this:
|
524
|
+
# sock.setsockopt(:SOCKET, :REUSEADDR, true)
|
525
|
+
# sock.setsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR, true)
|
526
|
+
# sock.setsockopt(Socket::Option.bool(:INET, :SOCKET, :REUSEADDR, true))
|
527
|
+
#
|
528
|
+
# Some socket options are integers with numeric values, in this case #setsockopt
|
529
|
+
# could be called like this:
|
530
|
+
# sock.setsockopt(:IP, :TTL, 255)
|
531
|
+
# sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_TTL, 255)
|
532
|
+
# sock.setsockopt(Socket::Option.int(:INET, :IP, :TTL, 255))
|
533
|
+
#
|
534
|
+
# Option values may be structs. Passing them can be complex as it involves
|
535
|
+
# examining your system headers to determine the correct definition. An example
|
536
|
+
# is an `ip_mreq`, which may be defined in your system headers as:
|
537
|
+
# struct ip_mreq {
|
538
|
+
# struct in_addr imr_multiaddr;
|
539
|
+
# struct in_addr imr_interface;
|
540
|
+
# };
|
541
|
+
#
|
542
|
+
# In this case #setsockopt could be called like this:
|
543
|
+
# optval = IPAddr.new("224.0.0.251").hton +
|
544
|
+
# IPAddr.new(Socket::INADDR_ANY, Socket::AF_INET).hton
|
545
|
+
# sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, optval)
|
546
|
+
#
|
547
|
+
def setsockopt: (*Symbol | Integer, boolish | Integer | String) -> void
|
548
|
+
|
549
|
+
# <!--
|
550
|
+
# rdoc-file=ext/socket/basicsocket.c
|
551
|
+
# - basicsocket.shutdown([how]) => 0
|
552
|
+
# -->
|
553
|
+
# Calls shutdown(2) system call.
|
554
|
+
#
|
555
|
+
# s.shutdown(Socket::SHUT_RD) disallows further read.
|
556
|
+
#
|
557
|
+
# s.shutdown(Socket::SHUT_WR) disallows further write.
|
558
|
+
#
|
559
|
+
# s.shutdown(Socket::SHUT_RDWR) disallows further read and write.
|
560
|
+
#
|
561
|
+
# *how* can be symbol or string:
|
562
|
+
# * :RD, :SHUT_RD, "RD" and "SHUT_RD" are accepted as Socket::SHUT_RD.
|
563
|
+
# * :WR, :SHUT_WR, "WR" and "SHUT_WR" are accepted as Socket::SHUT_WR.
|
564
|
+
# * :RDWR, :SHUT_RDWR, "RDWR" and "SHUT_RDWR" are accepted as
|
565
|
+
# Socket::SHUT_RDWR.
|
566
|
+
#
|
567
|
+
# UNIXSocket.pair {|s1, s2|
|
568
|
+
# s1.puts "ping"
|
569
|
+
# s1.shutdown(:WR)
|
570
|
+
# p s2.read #=> "ping\n"
|
571
|
+
# s2.puts "pong"
|
572
|
+
# s2.close
|
573
|
+
# p s1.read #=> "pong\n"
|
574
|
+
#
|
575
|
+
# }
|
576
|
+
#
|
577
|
+
def shutdown: (interned | Integer flags) -> void
|
578
|
+
|
579
|
+
private
|
580
|
+
|
581
|
+
def __recv_nonblock: (untyped, untyped, untyped, untyped) -> untyped
|
582
|
+
|
583
|
+
def __recvmsg: (untyped, untyped, untyped, untyped) -> untyped
|
584
|
+
|
585
|
+
def __recvmsg_nonblock: (untyped, untyped, untyped, untyped, untyped) -> untyped
|
586
|
+
|
587
|
+
def __sendmsg: (untyped, untyped, untyped, untyped) -> untyped
|
588
|
+
|
589
|
+
def __sendmsg_nonblock: (untyped, untyped, untyped, untyped, untyped) -> untyped
|
590
|
+
end
|