cakedb 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/cakedb.rb +35 -15
  2. metadata +1 -1
data/lib/cakedb.rb CHANGED
@@ -4,7 +4,7 @@ require 'socket'
4
4
 
5
5
  class CakeDB
6
6
  def initialize( server="127.0.0.1", port=8888 )
7
- puts "Connection Initiated"
7
+ #puts "Connection Initiated"
8
8
  @server = TCPSocket.new(server, port)
9
9
  @sids = {}
10
10
  end
@@ -23,7 +23,7 @@ class CakeDB
23
23
 
24
24
  def write(stream,payload)
25
25
  sid = get_sid(stream)
26
- puts sid
26
+ #puts sid
27
27
  @server.write [(payload.bytesize + 2),2,sid].pack("L>S>S>")
28
28
  @server.write payload
29
29
  @server.flush
@@ -38,20 +38,24 @@ class CakeDB
38
38
  return details
39
39
  end
40
40
 
41
- def read(stream, ts)
41
+ def read(stream, ts, tsend=nil, mode=4)
42
42
  #Issue the query
43
- sid = @sids[stream]
44
- puts sid
45
- @server.write [10,4,sid,ts].pack("L>S>S>Q>")
43
+ sid = get_sid(stream)
44
+ headersz = 10
45
+ if tsend
46
+ headersz=18
47
+ end
48
+ @server.write [headersz,mode,sid,ts].pack("L>S>S>Q>")
46
49
  @server.flush
50
+ result = Array.new
47
51
 
48
52
  #How much data we gotta get?
49
53
  recv_total = @server.recv(4).unpack("L>")[0]
54
+ puts "total is #{recv_total}"
50
55
  if recv_total > 0
51
56
  counter = 0
52
57
  #Recive the result
53
58
  while recv_total > 0
54
- counter+=1
55
59
  #Get the header - 12 bytes
56
60
  header_whole = @server.recv(12)
57
61
  header = header_whole.unpack("Q>L>")
@@ -65,25 +69,41 @@ class CakeDB
65
69
  end
66
70
 
67
71
  #recieve the data, header says how much
68
- result = @server.recv(header[1])
72
+ result[counter] = @server.recv(header[1])
69
73
 
70
74
  #Keep reading till we have everything we expect
71
- while(result.bytesize < header[1])
72
- result += @server.recv(header[1] - result.bytesize)
73
- puts "Incomplete read: #{result.bytesize} / #{header[1]}"
75
+ while(result[counter].bytesize < header[1])
76
+ result[counter] += @server.recv(header[1] - resultt[counter].bytesize)
77
+ puts "Incomplete read: #{resultt[counter].bytesize} / #{header[1]}"
74
78
  end
75
- if result.bytesize != header[1]
79
+ if result[counter].bytesize != header[1]
76
80
  puts "Incomplete read on payload receive"
77
- puts "Raw Data: #{result}"
81
+ puts "Raw Data: #{resultt[counter]}"
78
82
  puts "Length: #{header[1]} bytes"
79
- puts "Raw Data length: #{result.bytesize - 12}"
83
+ puts "Raw Data length: #{resultt[counter].bytesize - 12}"
80
84
  puts "Total Length: #{recv_total}"
81
85
  exit(1)
82
86
  end
83
- return result
87
+ recv_total = recv_total - header[1] - 12
88
+ counter+=1
84
89
  end
90
+ return result
85
91
  else
86
92
  # I SEE NOTHING!
87
93
  end
88
94
  end
95
+
96
+ def allSince(stream, ts)
97
+ #allSince is mode 4
98
+ return read(stream, ts, nil, 4)
99
+ end
100
+
101
+ def lastAt(stream, ts)
102
+ #lastAt is mode 6
103
+ return read(stream, ts, nil, 6)
104
+ end
105
+ #Perform a range query
106
+ def rangeQuery(stream, ts, tsend)
107
+ return read(stream, ts, tsend, 3)
108
+ end
89
109
  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.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: