クラス: 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