da_funk 0.27.0 → 0.28.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f293775e3af0f13bdb16ca16cda1d7dc7d9635b9
4
- data.tar.gz: 7685609eade74e2810a7b4340c6ff852fc7f4491
3
+ metadata.gz: 9c887fe92fba65392534eb8a45739e53b1a7933e
4
+ data.tar.gz: b2ef0569959b2c769527b43eedae47a939dc4da1
5
5
  SHA512:
6
- metadata.gz: e1ed56328ba17d28b857dc1b1d5e28cb931b6a39102c7768dffb89e9c349f1cf793ef6711970fa2eede9b7e1f390b64bc55312b33fcf1e2368c07e4b5659a491
7
- data.tar.gz: b488c910836f039199d477209130ff146b17d0ece3213f1fc90a7b7b2bf60db5fc60ccac6a897c19ef5b79a43c14f4605dc9975c06cde339902e72de9d5ed7b3
6
+ metadata.gz: b009cc3a5b57cd7f5268a40ea1f85839499fddf7ad7c3150a13c4e247666328d7dcd2613ffc802705eb0acf5b8341be11c7f3676eb5d66f43e6aa473ba5651b6
7
+ data.tar.gz: 2dcd7f1a3b0047dc070e863cc77e36fc7336142d52dd7f3d3e673c52d20fe853fcb6bf6d93a8b4c482c7b9bd7fd4da8aa494005bbcd2d08c614161cfdedff236
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- da_funk (0.27.0)
4
+ da_funk (0.28.0)
5
5
  archive-zip (~> 0.5)
6
6
  bundler (~> 1.7)
7
7
  cloudwalk_handshake (~> 0.6)
@@ -22,7 +22,7 @@ GEM
22
22
  io-like (0.3.0)
23
23
  posxml_parser (0.29.0)
24
24
  funky-emv (~> 0.3)
25
- rake (12.0.0)
25
+ rake (12.3.0)
26
26
  yard (0.9.12)
27
27
 
28
28
  PLATFORMS
@@ -1,5 +1,9 @@
1
1
  # DaFunk
2
2
 
3
+ ### 0.28.0 - 2017-12-07
4
+
5
+ - Support to interrupt file download if KEY CANCEL pressed.
6
+
3
7
  ### 0.27.0 - 2017-12-04
4
8
 
5
9
  - Update rake dependency.
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="0.27.0"
2
+ VERSION="0.28.0"
3
3
  end
4
4
 
@@ -113,7 +113,7 @@ class Device
113
113
  # Send Request
114
114
  socket.write(@request)
115
115
 
116
- return COMMUNICATION_ERROR if (response_size = get_response_size(socket.read(4))) <= 0
116
+ return COMMUNICATION_ERROR if (response_size = get_response_size(read_header_size(socket))) <= 0
117
117
 
118
118
  return MAPREDUCE_RESPONSE_ERROR unless @first_packet = get_binary_term_beginning(response_size)
119
119
 
@@ -151,6 +151,36 @@ class Device
151
151
 
152
152
  private
153
153
 
154
+ def read_header_size(socket)
155
+ buf, error = socket_read(socket, 4, Device::Setting.tcp_recv_timeout.to_i, 0)
156
+ case error
157
+ when nil
158
+ buf
159
+ else
160
+ ""
161
+ end
162
+ end
163
+
164
+ def socket_read(socket, size, timeout_seconds, total_attempts)
165
+ total_buffer = ""
166
+ error = nil
167
+ attempts = 0
168
+ timeout = Time.now + timeout_seconds
169
+ loop do
170
+ buf = socket.recv_nonblock(size - total_buffer.size)
171
+ total_buffer << buf.to_s
172
+ break if total_buffer.size >= size
173
+ break(error = :socket_closed) if buf.nil?
174
+ if (Time.now > timeout)
175
+ attempts+=1
176
+ timeout = Time.now + timeout_seconds
177
+ break(error = :attempts_exceeded) if attempts > total_attempts
178
+ end
179
+ break(error = :user_cancel) if (getc(200) == Device::IO::CANCEL)
180
+ end
181
+ [total_buffer, error]
182
+ end
183
+
154
184
  def get_response_size(bytes)
155
185
  return -1 if bytes.to_s.size <= 0
156
186
  bytes.to_s.unpack("N*").first
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: da_funk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.0
4
+ version: 0.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Scalone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-04 00:00:00.000000000 Z
11
+ date: 2017-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake