クラス: Mongo::Crypt::Binary Private

継承:
オブジェクト
  • オブジェクト
すべて表示
定義:
lib/mongo/crypt/binary.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

mongocrypt_binary_t を囲むラッパーは、uint- 8バイト データの非所有バッファです。 各バイナリ インスタンスは、そのデータを有効に保つために、渡されたデータのコピーを保持します。

クラスメソッドの概要を折りたたむ

インスタンス メソッドの概要を折りたたむ

コンストラクターの詳細

#initialize(data: nil, pointer: nil) ⇒ Binary

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

string またはポインターでバイナリ オブジェクトを初期化する場合、

バイト string をラップする新しいバイナリ オブジェクトを作成します

Node .from_pointer を使用することをお勧めします または メソッド

パラメーター:

  • データ string (デフォルトはnil

    バイト バッファでラップされたデータ string(任意)

  • ポインター FFI::Pointer (デフォルトはnil

    既存の mongocrypt_binary_t オブジェクトへのポインター



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# ファイル 'lib/mongo/crypt/binary.rb' 行 39

デフォルト 初期化(データ: nil, ポインター: nil)
  場合 データ
    データstringを uint-8 バイトの配列として表現
    バイト = データ.解凍(' C* ')

    #FFI::MemoryPointer は範囲を超えるとメモリを自動的に解放します。
    @data_p = FFI::MemoryPointer.新着情報(バイト.Length)
              .write_array_ of_uint 8(バイト)

    #FFI::AutoPointer はカスタム リリース戦略を使用して自動的に解放
    このオブジェクトがスコープを超えるとポインターは 表示されます
    @bin = FFI::AutoPointer.新着情報(
      バインディング.mongocrypt_binary_new_from_data(@data_p, バイト.Length),
      バインディング.メソッド(:mongocrypt_binary_detry)
    )
  elsif ポインター
    # バイナリ クラスがこのように使用される場合、ポインターは
    基盤となるmongocrypt_binary_t オブジェクトは次の場所に割り当てられます:
    それ以外の場合は 。 データの割り当てを解除するのはこのクラスの責任です。
    @bin = ポインター
  else
    #FFI::AutoPointer はカスタム リリース戦略を使用して自動的に解放
    このオブジェクトがスコープを超えるとポインターは 表示されます
    @bin = FFI::AutoPointer.新着情報(
      バインディング.mongocrypt_binary_new,
      バインディング.メソッド(:mongocrypt_binary_detry)
    )
  end
end

クラスメソッドの詳細

from_data (データ) = Mongo::Crypt::Binary

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

string でバイナリ オブジェクトを初期化します。 バイナリ オブジェクトは指定された string のコピーを保存し、範囲を超えると割り当てられたメモリを破棄します。

パラメーター:

  • データ ( string )

    バイナリ オブジェクトによってラップされる string

次の値を返します。



87
88
89
# ファイル 'lib/mongo/crypt/binary.rb' 行 87

デフォルト 自己.from_data(データ)
  自己.新着情報(データ: データ)
end

from_pointer (ポインター)= Mongo::Crypt::Binary

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

バイナリ オブジェクトを既存のポインターから mongocrypt_binary_t オブジェクトに初期化します。

パラメーター:

  • ポインター FFI ::Pointer

    既存の mongocrypt_binary_t オブジェクトへのポインター

次の値を返します。



76
77
78
# ファイル 'lib/mongo/crypt/binary.rb' 行 76

デフォルト 自己.from_pointer(ポインター)
  自己.新着情報(ポインター: ポインター)
end

wrap_string (str) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

string を mongocrypt_binary_t でラップし、ラップされた構造体への FFI::Pointer を生成します。



145
146
147
148
149
150
151
152
153
154
155
# ファイル 'lib/mongo/crypt/binary.rb' 行 145

デフォルト 自己.wrap_string(str)
  binary_p = バインディング.mongocrypt_binary_new_from_data(
    FFI::MemoryPointer.from_string(str),
    str.bytesize,
  )
  begin
    ノードの数 binary_p
  保証する
    バインディング.mongocrypt_binary_detry(binary_p)
  end
end

インスタンス メソッドの詳細

参照: FFI::Pointer

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

基礎となる mongocrypt_binary_t オブジェクトへの参照を返します

次の値を返します。

  • FFI ::Pointer

    基礎となる mongocrypt_binary_t オブジェクト



139
140
141
# ファイル 'lib/mongo/crypt/binary.rb' 行 139

デフォルト 参照
  @bin
end

# to_s = string

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

保存されたデータを string として返します

次の値を返します。

  • ( string )

    mongocrypt_binary_t に string として保存されたデータ



129
130
131
132
133
# ファイル 'lib/mongo/crypt/binary.rb' 行 129

デフォルト to_s
  str_p = バインディング.get_binary_data_direct(参照)
  len = バインディング.get_binary_en_direct(参照)
  str_p.read_string(len)
end

#write (データ) = true

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

で渡されるデータは、次よりも多くのメモリを要する必要があります:

このバイナリ オブジェクトによってラップされている既存のデータを上書きする

基礎となる mongocrypt_binary_t オブジェクトに割り当てられた元のメモリ。 libmongocrypt によって必要とされる場合を除き、このメソッドを使用しないでください。

が最初に割り当てられたよりも、 または すでにデータを持っているオブジェクトに書き込んだときに

パラメーター:

  • データ ( string )

    このバイナリ オブジェクトによってラップされる新しい string データ

次の値を返します。

  • ( true )

    常に true

次の値が発生します。

  • (ArgumentError)

    追加のデータを書き込次のときに発生



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# ファイル 'lib/mongo/crypt/binary.rb' 行 104

デフォルト 書込み (write)(データ)
  場合 @data
    発生 ArgumentError, 所有されているバイナリには書き込めません
  end

  # 現在割り当てられているスペースよりも長いstringは書き込めません
  mongocrypt_binary_t オブジェクトによる#
  str_p = バインディング.get_binary_data_direct(参照)
  len = バインディング.get_binary_en_direct(参照)

  場合 len < データ.bytesize
    発生 ArgumentError.新着情報(
      " #{ データ . バイト サイズ } バイトのデータをバイナリ オブジェクトに 書込み ( write) できません " +
      これは #{Binding . get_binary_en_direct ( @bin ) } バイトで初期化されました。
    )
  end

  str_p.put_bytes(0, データ)

  true
end