da_funk 0.27.0 → 0.28.0

Sign up to get free protection for your applications and to get access to all the features.
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