Class: CZMQ::FFI::Zchunk
- Inherits:
-
Object
- Object
- CZMQ::FFI::Zchunk
- Defined in:
- lib/czmq-ffi-gen/czmq/ffi/zchunk.rb
Overview
This class is 100% generated using zproject.
work with memory chunks
Defined Under Namespace
Classes: DestroyedError
Class Method Summary collapse
- .__new ⇒ Object
- .create_finalizer_for(ptr) ⇒ Proc
-
.destructor_fn ⇒ Object
Create a new callback of the following type: Destroy an item typedef void (zchunk_destructor_fn) ( void **hint);.
-
.frommem(data, size, destructor, hint) ⇒ CZMQ::Zchunk
Create a new chunk from memory.
-
.is(self_) ⇒ Boolean
Probe the supplied object, and report if it looks like a zchunk_t.
-
.new(data, size) ⇒ CZMQ::Zchunk
Create a new chunk of the specified size.
-
.packx(self_p) ⇒ Zframe
Transform zchunk into a zframe that can be sent in a message.
-
.read(handle, bytes) ⇒ Zchunk
Read chunk from an open file descriptor.
-
.slurp(filename, maxsize) ⇒ Zchunk
Try to slurp an entire file into a chunk.
-
.test(verbose) ⇒ void
Self test of this class.
-
.unpack(frame) ⇒ Zchunk
Transform a zframe into a zchunk.
Instance Method Summary collapse
-
#__ptr ⇒ ::FFI::Pointer
(also: #to_ptr)
Return internal pointer.
-
#__ptr_give_ref ⇒ ::FFI::MemoryPointer
Nullify internal pointer and return pointer pointer.
-
#__undef_finalizer ⇒ void
Undefines the finalizer for this object.
-
#append(data, size) ⇒ Integer
Append user-supplied data to chunk, return resulting chunk size.
-
#consume(source) ⇒ Integer
Copy as much data from ‘source’ into the chunk as possible; returns the new size of chunk.
-
#data ⇒ ::FFI::Pointer
Return chunk data.
-
#destroy ⇒ void
Destroy a chunk.
-
#digest ⇒ String
Calculate SHA1 digest for chunk, using zdigest class.
-
#dup ⇒ Zchunk
Create copy of chunk, as new chunk object.
-
#exhausted ⇒ Boolean
Returns true if the chunk was exhausted by consume methods, or if the chunk has a size of zero.
-
#extend(data, size) ⇒ Integer
Append user-supplied data to chunk, return resulting chunk size.
-
#fill(filler, size) ⇒ Integer
Fill chunk data from user-supplied octet.
-
#fprint(file) ⇒ void
Dump chunk to FILE stream, for debugging and tracing.
-
#initialize(ptr, finalize = true) ⇒ Zchunk
constructor
Attaches the pointer ptr to this instance and defines a finalizer for it if necessary.
-
#max_size ⇒ Integer
Return chunk max size.
- #null? ⇒ Boolean
-
#pack ⇒ Zframe
Transform zchunk into a zframe that can be sent in a message.
-
#print ⇒ void
Dump message to stderr, for debugging and tracing.
-
#resize(size) ⇒ void
Resizes chunk max_size as requested; chunk_cur size is set to zero.
-
#set(data, size) ⇒ Integer
Set chunk data from user-supplied data; truncate if too large.
-
#size ⇒ Integer
Return chunk cur size.
-
#strdup ⇒ ::FFI::AutoPointer
Return chunk data copied into freshly allocated string Caller must free string when finished with it.
-
#streq(string) ⇒ Boolean
Return TRUE if chunk body is equal to string, excluding terminator.
-
#strhex ⇒ ::FFI::AutoPointer
Return chunk data encoded as printable hex string.
-
#write(handle) ⇒ Integer
Write chunk to an open file descriptor.
Constructor Details
#initialize(ptr, finalize = true) ⇒ Zchunk
Attaches the pointer ptr to this instance and defines a finalizer for it if necessary.
24 25 26 27 28 29 30 31 32 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 24 def initialize(ptr, finalize = true) @ptr = ptr if @ptr.null? @ptr = nil # Remove null pointers so we don't have to test for them. elsif finalize @finalizer = self.class.create_finalizer_for @ptr ObjectSpace.define_finalizer self, @finalizer end end |
Class Method Details
.__new ⇒ Object
18 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 18 alias :__new :new |
.create_finalizer_for(ptr) ⇒ Proc
35 36 37 38 39 40 41 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 35 def self.create_finalizer_for(ptr) Proc.new do ptr_ptr = ::FFI::MemoryPointer.new :pointer ptr_ptr.write_pointer ptr ::CZMQ::FFI.zchunk_destroy ptr_ptr end end |
.destructor_fn ⇒ Object
WARNING: If your Ruby code doesn’t retain a reference to the FFI::Function object after passing it to a C function call, it may be garbage collected while C still holds the pointer, potentially resulting in a segmentation fault.
Create a new callback of the following type: Destroy an item
typedef void (zchunk_destructor_fn) (
void **hint);
85 86 87 88 89 90 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 85 def self.destructor_fn ::FFI::Function.new :void, [:pointer], blocking: true do |hint| result = yield hint result end end |
.frommem(data, size, destructor, hint) ⇒ CZMQ::Zchunk
Create a new chunk from memory. Take ownership of the memory and calling the destructor on destroy.
111 112 113 114 115 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 111 def self.frommem(data, size, destructor, hint) size = Integer(size) ptr = ::CZMQ::FFI.zchunk_frommem(data, size, destructor, hint) __new ptr end |
.is(self_) ⇒ Boolean
Probe the supplied object, and report if it looks like a zchunk_t.
408 409 410 411 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 408 def self.is(self_) result = ::CZMQ::FFI.zchunk_is(self_) result end |
.new(data, size) ⇒ CZMQ::Zchunk
Create a new chunk of the specified size. If you specify the data, it is copied into the chunk. If you do not specify the data, the chunk is allocated and left empty, and you can then add data using zchunk_append.
98 99 100 101 102 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 98 def self.new(data, size) size = Integer(size) ptr = ::CZMQ::FFI.zchunk_new(data, size) __new ptr end |
.packx(self_p) ⇒ Zframe
Transform zchunk into a zframe that can be sent in a message. Take ownership of the chunk.
354 355 356 357 358 359 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 354 def self.packx(self_p) self_p = self_p.__ptr_give_ref result = ::CZMQ::FFI.zchunk_packx(self_p) result = Zframe.__new result, true result end |
.read(handle, bytes) ⇒ Zchunk
Read chunk from an open file descriptor
257 258 259 260 261 262 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 257 def self.read(handle, bytes) bytes = Integer(bytes) result = ::CZMQ::FFI.zchunk_read(handle, bytes) result = Zchunk.__new result, true result end |
.slurp(filename, maxsize) ⇒ Zchunk
Try to slurp an entire file into a chunk. Will read up to maxsize of the file. If maxsize is 0, will attempt to read the entire file and fail with an assertion if that cannot fit into memory. Returns a new chunk containing the file data, or NULL if the file could not be read.
283 284 285 286 287 288 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 283 def self.slurp(filename, maxsize) maxsize = Integer(maxsize) result = ::CZMQ::FFI.zchunk_slurp(filename, maxsize) result = Zchunk.__new result, true result end |
Instance Method Details
#__ptr ⇒ ::FFI::Pointer Also known as: to_ptr
Return internal pointer
48 49 50 51 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 48 def __ptr raise DestroyedError unless @ptr @ptr end |
#__ptr_give_ref ⇒ ::FFI::MemoryPointer
This detaches the current instance from the native object and thus makes it unusable.
Nullify internal pointer and return pointer pointer.
59 60 61 62 63 64 65 66 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 59 def __ptr_give_ref raise DestroyedError unless @ptr ptr_ptr = ::FFI::MemoryPointer.new :pointer ptr_ptr.write_pointer @ptr __undef_finalizer if @finalizer @ptr = nil ptr_ptr end |
#__undef_finalizer ⇒ void
Only use this if you need to and can guarantee that the native object will be freed by other means.
This method returns an undefined value.
Undefines the finalizer for this object.
71 72 73 74 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 71 def __undef_finalizer ObjectSpace.undefine_finalizer self @finalizer = nil end |
#append(data, size) ⇒ Integer
Append user-supplied data to chunk, return resulting chunk size. If the data would exceeded the available space, it is truncated. If you want to grow the chunk to accommodate new data, use the zchunk_extend method.
204 205 206 207 208 209 210 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 204 def append(data, size) raise DestroyedError unless @ptr self_p = @ptr size = Integer(size) result = ::CZMQ::FFI.zchunk_append(self_p, data, size) result end |
#consume(source) ⇒ Integer
Copy as much data from ‘source’ into the chunk as possible; returns the new size of chunk. If all data from ‘source’ is used, returns exhausted on the source chunk. Source can be consumed as many times as needed until it is exhausted. If source was already exhausted, does not change chunk.
233 234 235 236 237 238 239 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 233 def consume(source) raise DestroyedError unless @ptr self_p = @ptr source = source.__ptr if source result = ::CZMQ::FFI.zchunk_consume(self_p, source) result end |
#data ⇒ ::FFI::Pointer
Return chunk data
162 163 164 165 166 167 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 162 def data() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_data(self_p) result end |
#destroy ⇒ void
This method returns an undefined value.
Destroy a chunk
120 121 122 123 124 125 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 120 def destroy() return unless @ptr self_p = __ptr_give_ref result = ::CZMQ::FFI.zchunk_destroy(self_p) result end |
#digest ⇒ String
Calculate SHA1 digest for chunk, using zdigest class.
375 376 377 378 379 380 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 375 def digest() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_digest(self_p) result end |
#dup ⇒ Zchunk
Create copy of chunk, as new chunk object. Returns a fresh zchunk_t object, or null if there was not enough heap memory. If chunk is null, returns null.
295 296 297 298 299 300 301 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 295 def dup() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_dup(self_p) result = Zchunk.__new result, true result end |
#exhausted ⇒ Boolean
Returns true if the chunk was exhausted by consume methods, or if the chunk has a size of zero.
245 246 247 248 249 250 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 245 def exhausted() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_exhausted(self_p) result end |
#extend(data, size) ⇒ Integer
Append user-supplied data to chunk, return resulting chunk size. If the data would exceeded the available space, the chunk grows in size.
218 219 220 221 222 223 224 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 218 def extend(data, size) raise DestroyedError unless @ptr self_p = @ptr size = Integer(size) result = ::CZMQ::FFI.zchunk_extend(self_p, data, size) result end |
#fill(filler, size) ⇒ Integer
Fill chunk data from user-supplied octet
188 189 190 191 192 193 194 195 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 188 def fill(filler, size) raise DestroyedError unless @ptr self_p = @ptr filler = Integer(filler) size = Integer(size) result = ::CZMQ::FFI.zchunk_fill(self_p, filler, size) result end |
#fprint(file) ⇒ void
This method returns an undefined value.
Dump chunk to FILE stream, for debugging and tracing.
386 387 388 389 390 391 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 386 def fprint(file) raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_fprint(self_p, file) result end |
#max_size ⇒ Integer
Return chunk max size
152 153 154 155 156 157 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 152 def max_size() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_max_size(self_p) result end |
#null? ⇒ Boolean
43 44 45 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 43 def null? !@ptr or @ptr.null? end |
#pack ⇒ Zframe
Transform zchunk into a zframe that can be sent in a message.
341 342 343 344 345 346 347 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 341 def pack() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_pack(self_p) result = Zframe.__new result, true result end |
#print ⇒ void
This method returns an undefined value.
Dump message to stderr, for debugging and tracing. See zchunk_fprint for details
397 398 399 400 401 402 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 397 def print() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_print(self_p) result end |
#resize(size) ⇒ void
This method returns an undefined value.
Resizes chunk max_size as requested; chunk_cur size is set to zero
131 132 133 134 135 136 137 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 131 def resize(size) raise DestroyedError unless @ptr self_p = @ptr size = Integer(size) result = ::CZMQ::FFI.zchunk_resize(self_p, size) result end |
#set(data, size) ⇒ Integer
Set chunk data from user-supplied data; truncate if too large. Data may be null. Returns actual size of chunk
175 176 177 178 179 180 181 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 175 def set(data, size) raise DestroyedError unless @ptr self_p = @ptr size = Integer(size) result = ::CZMQ::FFI.zchunk_set(self_p, data, size) result end |
#size ⇒ Integer
Return chunk cur size
142 143 144 145 146 147 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 142 def size() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_size(self_p) result end |
#strdup ⇒ ::FFI::AutoPointer
Return chunk data copied into freshly allocated string Caller must free string when finished with it.
319 320 321 322 323 324 325 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 319 def strdup() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_strdup(self_p) result = ::FFI::AutoPointer.new(result, LibC.method(:free)) result end |
#streq(string) ⇒ Boolean
Return TRUE if chunk body is equal to string, excluding terminator
331 332 333 334 335 336 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 331 def streq(string) raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_streq(self_p, string) result end |
#strhex ⇒ ::FFI::AutoPointer
Return chunk data encoded as printable hex string. Caller must free string when finished with it.
307 308 309 310 311 312 313 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 307 def strhex() raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_strhex(self_p) result = ::FFI::AutoPointer.new(result, LibC.method(:free)) result end |
#write(handle) ⇒ Integer
Write chunk to an open file descriptor
268 269 270 271 272 273 |
# File 'lib/czmq-ffi-gen/czmq/ffi/zchunk.rb', line 268 def write(handle) raise DestroyedError unless @ptr self_p = @ptr result = ::CZMQ::FFI.zchunk_write(self_p, handle) result end |