cakedb 0.0.9 → 0.0.10

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 (2) hide show
  1. data/lib/cakedb.rb +27 -32
  2. metadata +1 -1
data/lib/cakedb.rb CHANGED
@@ -8,6 +8,7 @@ class CakeDB
8
8
  @server = TCPSocket.new(server, port)
9
9
  @sids = {}
10
10
  @loggingLevel = lvl
11
+ @timeout = 30
11
12
  end
12
13
  def get_sid(stream)
13
14
  if @sids[stream].nil?
@@ -39,6 +40,30 @@ class CakeDB
39
40
  return details
40
41
  end
41
42
 
43
+ def data_in(length)
44
+ data = nil
45
+ got = 0
46
+ timeOver = Time.now + @timeout
47
+ while got < length
48
+ data = @server.recv(length)
49
+ got += data.bytesize
50
+ if Time.now > timeOver
51
+ raise "Timeout on incomplete read, returning what I had"
52
+ if @loggingLevel == 1
53
+ puts "Timeout Hit. GT #{timeOver}"
54
+ end
55
+ return data
56
+ end
57
+ if @loggingLevel == 2 && got < length
58
+ puts "Incomplete read on payload receive"
59
+ puts "Raw Data: #{data}"
60
+ puts "Length: #{length} bytes"
61
+ puts "Raw Data length: #{data.bytesize}"
62
+ end
63
+ end
64
+ return data
65
+ end
66
+
42
67
  def read(stream, ts, tsend=nil, mode=4)
43
68
  #Issue the query
44
69
  sid = get_sid(stream)
@@ -52,50 +77,20 @@ class CakeDB
52
77
  result = Array.new
53
78
 
54
79
  #How much data we gotta get?
55
-
56
- recv_total = @server.recv(4).unpack("L>")[0]
80
+ recv_total = data_in(4).unpack("L>")[0]
57
81
  #puts "total is #{recv_total}"
58
82
  if recv_total > 0
59
83
  counter = 0
60
84
  #Recive the result
61
85
  while recv_total > 0
62
86
  #Get the header - 12 bytes
63
- header_whole = @server.recv(12)
87
+ header_whole = data_in(12)
64
88
  header = header_whole.unpack("Q>L>")
65
- if header[0] == nil || header[1] == nil
66
- if @loggingLevel == 1
67
- puts "You have been eaten by a Grue"
68
- end
69
- raise "You have been eaten by a Grue"
70
- end
71
- if header_whole.bytesize !=12
72
- if @loggingLevel == 1
73
- puts "Incomplete header"
74
- puts "Length: #{header[1]}"
75
- puts "TS: #{header[0]}"
76
- end
77
- raise "Header Incomplete"
78
- end
79
89
 
80
90
  #recieve the data, header says how much
81
91
  result[counter] = Hash.new
82
92
  result[counter]["ts"] = header[0]
83
93
  result[counter]["data"] = @server.recv(header[1])
84
-
85
- #Keep reading till we have everything we expect
86
- while(result[counter]["data"].bytesize < header[1])
87
- result[counter]["data"] += @server.recv(header[1] - result[counter]["data"].bytesize)
88
- puts "Incomplete read: #{result[counter]["data"].bytesize} / #{header[1]}"
89
- end
90
- if result[counter]["data"].bytesize != header[1]
91
- if @loggingLevel == 2
92
- puts "Incomplete read on payload receive"
93
- puts "Raw Data: #{resultt[counter]}"
94
- puts "Length: #{header[1]} bytes"
95
- puts "Raw Data length: #{resultt[counter].bytesize - 12}"
96
- puts "Total Length: #{recv_total}"
97
- end
98
- end
99
94
  recv_total = recv_total - header[1] - 12
100
95
  counter+=1
101
96
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cakedb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: