thread_io 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/thread_io.rb +42 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1ddae2ee6000eeb036b0ed8bccf23ca56dd80823ba7d4e86b8075b0751a1daa3
4
+ data.tar.gz: 012364aed013a8381c6755b0e3e1b60e1ba640dae28cdb05ac3f09b54631bb59
5
+ SHA512:
6
+ metadata.gz: a71ac3aab6e4f7f8a66d11cb62da0c4fe5ab45a0bbd37e6f041e87f6d70468dfa6a38e80028e60bf0237d5cd05e4edd69c1b2f927cfa4aafe4f789ed40c21961
7
+ data.tar.gz: 2da2efb69a9e4780c62116585e911cdb6d242b5a68dda37c45679e6c858a66209e1317a10629817306f013dddffc170b3e7ccc02ca552b431178b186c45d2b4c
data/lib/thread_io.rb ADDED
@@ -0,0 +1,42 @@
1
+ # this class loads the contents of a file using a Thread so that it's running
2
+ # outside your main Thread.
3
+ #
4
+ # Usage:
5
+ # tio = ThreadIO.new.read('/tmp/a_large_file.txt') # read a file
6
+ # ... do other stuff ...
7
+ #
8
+ # # optional loop until the file is read
9
+ # loop do
10
+ # breadk if tio.ready?
11
+ # sleep 1
12
+ # end
13
+ #
14
+ # tio.string # contains the contents of the file as one large String
15
+ class ThreadIO
16
+ attr_reader :string
17
+
18
+ def initialize
19
+ @ready = false
20
+ @string = nil
21
+ end
22
+
23
+ # this method returns immediately and loads the file in the background
24
+ #
25
+ # path: the path to the file you want to read.
26
+ def read(path)
27
+ @ready = false
28
+ Thread.new do
29
+ @string = nil
30
+ @string = IO.read(path)
31
+ @ready = true
32
+
33
+ nil
34
+ end
35
+
36
+ nil
37
+ end
38
+
39
+ def ready?
40
+ @ready
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: thread_io
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jeff Lunt
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-01-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: a small class that loads files in the background via a Thread
14
+ email: jefflunt@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/thread_io.rb
20
+ homepage: https://github.com/jefflunt/thread_io
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubygems_version: 3.4.1
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: want a simple way to load large files in the backgroudn via a Thread? then
43
+ this library is for you.
44
+ test_files: []