OpenSSL::GETS_BIO
Inherits Reference < Object
Constants
BIO_C_FILE_SEEK = 128
BIO_C_FILE_TELL = 133
GETS_BIO = begin
crystal_bio = OpenSSL::BIO::CRYSTAL_BIO
ctrl = Proc(::Pointer(LibCrypto::Bio), LibC::Int, LibC::Long, ::Pointer(Void), LibC::Long).new do |bio, cmd, _num, _ptr|
io = io_for(bio)
val = {% if true %}
case cmd
when LibCrypto::CTRL_FLUSH
io.flush
1
when LibCrypto::CTRL_PUSH, LibCrypto::CTRL_POP, LibCrypto::CTRL_EOF
0
when BIO_C_FILE_TELL, BIO_C_FILE_SEEK
0
{% if LibCrypto.has_constant?(:CTRL_SET_KTLS) %}
when LibCrypto::CTRL_SET_KTLS
0
{% elsif LibCrypto.has_constant?(:CTRL_SET_KTLS_SEND) %}
when LibCrypto::CTRL_SET_KTLS_SEND
0
{% end %}
{% if (LibCrypto.has_constant?(:CTRL_GET_KTLS_SEND)) && (LibCrypto.has_constant?(:CTRL_GET_KTLS_RECV)) %}
when LibCrypto::CTRL_GET_KTLS_SEND, LibCrypto::CTRL_GET_KTLS_RECV
0
{% end %}
{% if (LibCrypto.has_constant?(:CTRL_SET_KTLS_TX_SEND_CTRL_MSG)) && (LibCrypto.has_constant?(:CTRL_CLEAR_KTLS_TX_CTRL_MSG)) %}
when LibCrypto::CTRL_SET_KTLS_TX_SEND_CTRL_MSG, LibCrypto::CTRL_CLEAR_KTLS_TX_CTRL_MSG
0
{% end %}
{% if LibCrypto.has_constant?(:CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE) %}
when LibCrypto::CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE
0
{% end %}
else
STDERR.puts "WARNING: Unsupported BIO ctrl call (#{cmd})"
0
end
{% end %}
LibCrypto::Long.new(val)
end
bgets = Proc(::Pointer(LibCrypto::Bio), ::Pointer(LibC::Char), LibC::Int, LibC::Int).new do |bio, buffer, len|
io = io_for(bio)
io.flush
position = io.pos
line = io.gets(len, false)
if line.nil?
0
else
io.seek(position)
bytes = (io.read(Slice.new(buffer, line.bytesize))).to_i
if bytes == 1
else
bytes = bytes - 1
end
bytes
end
end
{% if (compare_versions(LibCrypto::OPENSSL_VERSION, "1.1.0")) >= 0 %}
LibCrypto.BIO_meth_set_ctrl(crystal_bio, ctrl)
LibCrypto.BIO_meth_set_gets(crystal_bio, bgets)
{% else %}
crystal_bio.value.ctrl = ctrl
crystal_bio.value.bgets = bgets
{% end %}
crystal_bio
end
Constructors
new(io : IO)
SourceInstance methods
finalize
Sourceio
Sourceto_unsafe
Source