클래스: Mongo::Crypt::Binary Private
- 상속:
-
객체
- 객체
- Mongo::Crypt::Binary
- 다음에 정의됨:
- 빌드/ Ruby-driver-v2.19/lib/mongo/crypt/binary.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
mongocrypt_binary_t 주위의 래퍼로, uint-8 바이트 데이터의 비소유 버퍼입니다. 각 바이너리 인스턴스는 전달된 데이터의 복사본을 유지하여 해당 데이터를 활성 상태로 유지합니다.
클래스 메서드 요약 접기
-
.from_data(data) ⇒ Mongo::Crypt::Binary
비공개
string 을 사용하여 바이너리 객체 를 초기화합니다.
-
.from_pointer(포인터) ⇒ Mongo::Crypt::Binary
비공개
mongocrypt_binary_t 객체에 대한 기존 포인터에서 바이너리 객체를 초기화합니다.
-
.래퍼 문자열(str) ⇒ 객체
비공개
string 을 mongocrypt_binary_t로 래핑하여 래핑된 구조체에 대한 FFI::Pointer를 생성합니다.
인스턴스 메서드 요약 접기
-
#initialize(data: nil, 포인터: nil) ⇒ 바이너리
생성자
비공개
바이트 string 을 래핑하는 새 바이너리 객체 를 만듭니다.
-
#ref ⇒ FFI::Pointer
비공개
기본 mongocrypt_binary_t 객체에 대한 참조를 반환합니다.
-
#to_s ⇒ string
비공개
string 로 저장된 데이터를 반환합니다.
-
#쓰기 (write)(데이터) ⇒ true
비공개
이 바이너리 객체로 래핑된 기존 데이터를 덮어씁니다.
생성자 세부 정보
#initialize(data: nil, pointer: nil) ⇒ Binary
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
string 이나 포인터를 사용하여 바이너리 객체를 초기화할 때,
바이트 string을 래핑하는 새 바이너리 객체 만들기
#self.from_pointer를 사용하는 것이 좋습니다. 또는 #self.from_data 메서드
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 의 복사본을 저장 하고 범위를 벗어나면 할당된 메모리를 삭제합니다.
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 객체에 대한 기존 포인터에서 바이너리 객체를 초기화합니다.
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 |
인스턴스 메서드 세부 정보
#ref ⇒ FFI::Pointer
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
기본 mongocrypt_binary_t 객체 에 대한 참조를 반환합니다.
139 140 141 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/binary.rb', 줄 139 def ref @bin end |
#to_s ⇒ string
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
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에서 요구하지 않는 한 이 방법을 사용하지 마세요.
데이터를 이미 소유한 객체에 쓸 때 또는 원래 할당된 것보다
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 |