클래스: Mongo::Crypt::Binary Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
빌드/ Ruby-driver-v2.19/lib/mongo/crypt/binary.rb

개요

이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

mongocrypt_binary_t 주위의 래퍼로, uint-8 바이트 데이터의 비소유 버퍼입니다. 각 바이너리 인스턴스는 전달된 데이터의 복사본을 유지하여 해당 데이터를 활성 상태로 유지합니다.

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

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

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

참고:

string 이나 포인터를 사용하여 바이너리 객체를 초기화할 때,

바이트 string을 래핑하는 새 바이너리 객체 만들기

#self.from_pointer를 사용하는 것이 좋습니다. 또는 #self.from_data 메서드

매개변수:

  • 데이터 (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
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 39

def 초기화(데이터: nil, 포인터: nil)
  만약 데이터
    # 데이터 string 을 단위-8 바이트 배열 로 표현
    바이트 = 데이터.unpack('C*')

    # FFI::MemoryPointer가 범위를 벗어나면 메모리를 자동으로 해제합니다.
    @data_p = FFI::MemoryPointer.신규(바이트.분량)
              .write_array_of_uint8(바이트)

    # FFI::AutoPointer는 사용자 지정 출시하다 전략을 사용하여
    # 이 객체 가 범위를 벗어나면 포인터
    @bin = FFI::자동 포인터.신규(
      바인딩.mongocrypt_binary_new_from_data(@data_p, 바이트.분량),
      바인딩.메서드(:mongocrypt_binary_destory)
    )
  elsif 포인터
    # 바이너리 클래스가 이런 방식으로 사용되면 포인터가
    # 기본 mongocrypt_binary_t 객체 가 어딘가에 할당되어 있습니다.
    # 기타. 데이터 할당을 취소하는 것은 이 클래스의 책임이 아닙니다.
    @bin = 포인터
  other
    # FFI::AutoPointer는 사용자 지정 출시하다 전략을 사용하여
    # 이 객체 가 범위를 벗어나면 포인터
    @bin = FFI::자동 포인터.신규(
      바인딩.mongocrypt_binary_new,
      바인딩.메서드(:mongocrypt_binary_destory)
    )
  end
end

클래스 메서드 세부 정보

.from_data(data) ⇒ Mongo::Crypt::Binary

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

string 을 사용하여 바이너리 객체 를 초기화합니다. 바이너리 객체 는 지정된 string 의 복사본을 저장 하고 범위를 벗어나면 할당된 메모리를 삭제합니다.

매개변수:

  • 데이터 (string)

    Binary 객체 로 래핑할 string 입니다.

반환합니다:



87
88
89
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 87

def self.from_data(데이터)
  self.신규(데이터: 데이터)
end

.from_pointer(포인터) ⇒ Mongo::Crypt::Binary

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

mongocrypt_binary_t 객체에 대한 기존 포인터에서 바이너리 객체를 초기화합니다.

매개변수:

  • 포인터 (FFI::Pointer)

    기존 mongocrypt_binary_t 객체 에 대한 포인터

반환합니다:



76
77
78
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 76

def self.from_pointer(포인터)
  self.신규(포인터: 포인터)
end

.래퍼 문자열(str) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

string 을 mongocrypt_binary_t로 래핑하여 래핑된 구조체에 대한 FFI::Pointer를 생성합니다.



145
146
147
148
149
150
151
152
153
154
155
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 145

def self.랩 문자열(str)
  바이너리_p = 바인딩.mongocrypt_binary_new_from_data(
    FFI::MemoryPointer.from_string(str),
    str.bytesize,
  )
  시작
    yield 바이너리_p
  보장
    바인딩.mongocrypt_binary_destory(바이너리_p)
  end
end

인스턴스 메서드 세부 정보

#refFFI::Pointer

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

기본 mongocrypt_binary_t 객체 에 대한 참조를 반환합니다.

반환합니다:

  • (FFI::Pointer)

    기본 mongocrypt_binary_t 객체



139
140
141
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 139

def ref
  @bin
end

#to_sstring

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

string로 저장된 데이터를 반환합니다.

반환합니다:

  • (string)

    mongocrypt_binary_t에 string로 저장된 데이터



129
130
131
132
133
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 129

def to_s
  str_p = 바인딩.mongocrypt_binary_data(ref)
  len = 바인딩.mongocrypt_binary_len(ref)
  str_p.read_string(len)
end

#쓰기 (write)(데이터) ⇒ true

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

참고:

전달된 데이터는 다음보다 많은 메모리를 차지하지 않아야 합니다.

이 바이너리 객체로 래핑된 기존 데이터를 덮어씁니다.

기본 mongocrypt_binary_t 객체에 할당된 원래 메모리입니다. libmongocrypt에서 요구하지 않는 한 이 방법을 사용하지 마세요.

데이터를 이미 소유한 객체에 쓸 때 또는 원래 할당된 것보다

매개변수:

  • 데이터 (string)

    이 바이너리 객체 로 래핑할 새 string 데이터입니다.

반환합니다:

  • (true)

    항상 참

다음을 발생시킵니다.

  • (ArgumentError)

    더 많은 데이터를 쓰려고 할 때 발생합니다.



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 104

def 쓰기(데이터)
  만약 @data
    올리다 ArgumentError, '소유한 바이너리에 쓰기 (write) 수 없습니다.'
  end

  # 현재 할당된 공간보다 긴 string 을 쓰기 (write) 수 없습니다.
  # mongocrypt_binary_t 객체
  str_p = 바인딩.mongocrypt_binary_data(ref)
  len = 바인딩.mongocrypt_binary_len(ref)

  만약 len < 데이터.bytesize
    올리다 ArgumentError.신규(
      " 바이너리객체에 #{data.bytesize} 바이트의 데이터를쓸 수 없습니다 " +
      "#{Binding. mongocrypt_binary_len( @bin)}바이트  초기화되었습니다 ."
    )
  end

  str_p.put_bytes(0, 데이터)

  true
end