stat-count-client 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +1 -0
- data/doc/collecter.thrift +299 -0
- data/doc/gen.txt +1 -0
- data/lib/config_loader.rb +2 -7
- data/lib/hessian_data_utils.rb +0 -7
- data/lib/logger_factory.rb +7 -12
- data/lib/stat-count-client.rb +2 -332
- data/lib/stat-count-client/config_loader.rb +13 -0
- data/lib/stat-count-client/hessian/stat_data_utils.rb +16 -0
- data/lib/stat-count-client/hessian_client.rb +179 -0
- data/lib/stat-count-client/logger_factory.rb +32 -0
- data/lib/stat-count-client/stat_count_data.rb +135 -0
- data/lib/stat-count-client/thrift/collecter_constants.rb +15 -0
- data/lib/stat-count-client/thrift/collecter_types.rb +209 -0
- data/lib/stat-count-client/thrift/remote_simple_count_collecter.rb +1766 -0
- data/lib/stat-count-client/thrift_client.rb +263 -0
- data/lib/stat-count-client/version.rb +1 -1
- data/test/stat_ccount_client_test.rb +76 -87
- data/test/stat_count_client_test.rb +181 -0
- data/test/thrift_count_client_test.rb +181 -0
- metadata +39 -15
- data/Gemfile.lock +0 -14
- data/stat-count-client.gemspec +0 -21
@@ -0,0 +1,13 @@
|
|
1
|
+
#encoding: UTF-8
|
2
|
+
|
3
|
+
#Example
|
4
|
+
#stat.count:
|
5
|
+
# hessian.domain: http://localhost:8080/stat-count-runtime/hessian/remoteSimpleCountCollecter
|
6
|
+
# hessian.java.package: com.ximalaya.stat.count.data
|
7
|
+
# log.file: D:/log/stat/stat-count-ruby.log
|
8
|
+
# log.level: info
|
9
|
+
|
10
|
+
module ConfigLoader
|
11
|
+
LOADER = YAML.load_file("../config/stat-count-client.yaml");
|
12
|
+
CONFIG = LOADER['stat.count']
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#encoding: UTF-8
|
2
|
+
|
3
|
+
module Stat
|
4
|
+
module Data
|
5
|
+
module Utils
|
6
|
+
|
7
|
+
|
8
|
+
# def java_class_name(java_package)
|
9
|
+
# index = self.class.name.rindex "::"
|
10
|
+
# index = (index.nil?) ? 0 : index+2
|
11
|
+
# simple_name = self.class.name[index..-1]
|
12
|
+
# java_package.nil? ? simple_name : java_package + "." + simple_name
|
13
|
+
# end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,179 @@
|
|
1
|
+
#encoding: UTF-8
|
2
|
+
|
3
|
+
require "yaml"
|
4
|
+
require "stat-count-client/config_loader"
|
5
|
+
require "stat-count-client/logger_factory"
|
6
|
+
require "stat-count-client/stat_count_data"
|
7
|
+
|
8
|
+
module Stat
|
9
|
+
module Count
|
10
|
+
module Client
|
11
|
+
class StatCountClient
|
12
|
+
include Stat::Count::Data
|
13
|
+
include ConfigLoader
|
14
|
+
CONFIG = ConfigLoader::CONFIG
|
15
|
+
HESSIAN_PACKAGE = CONFIG['hessian.java.package'] || "com.ximalaya.stat.count.data"
|
16
|
+
|
17
|
+
@@logger = LoggerFactory.getLogger("StatCountHessianClient")
|
18
|
+
|
19
|
+
def initialize(hessian_url=nil)
|
20
|
+
@hessian_url = hessian_url;
|
21
|
+
if (@hessian_url.nil?)
|
22
|
+
@hessian_url ||= ENV['stat.count.domain']
|
23
|
+
@hessian_url ||= CONFIG['hessian.domain']
|
24
|
+
end
|
25
|
+
init(@hessian_url)
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_hash_unit(data)
|
29
|
+
hash = {}
|
30
|
+
data.instance_variables.each {|var| hash[var.to_s.delete("@")] = data.instance_variable_get(var) }
|
31
|
+
hash
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_hash_map(data)
|
35
|
+
hash = {}
|
36
|
+
data.instance_variables.each {|var|
|
37
|
+
internal_hash = {}
|
38
|
+
map = data.instance_variable_get(var)
|
39
|
+
map.each { |key, list|
|
40
|
+
newList = nil
|
41
|
+
list.each { |unit|
|
42
|
+
if (newList.nil?)
|
43
|
+
newList = Array.new
|
44
|
+
end
|
45
|
+
newList << to_hessian_unit(unit)
|
46
|
+
}
|
47
|
+
internal_hash[key] = newList
|
48
|
+
}
|
49
|
+
hash[var.to_s.delete("@")] = internal_hash
|
50
|
+
}
|
51
|
+
hash
|
52
|
+
end
|
53
|
+
|
54
|
+
def java_class_name(java_package, clazz)
|
55
|
+
index = clazz.name.rindex "::"
|
56
|
+
index = (index.nil?) ? 0 : index+2
|
57
|
+
simple_name = clazz.name[index..-1]
|
58
|
+
java_package.nil? ? simple_name : java_package + "." + simple_name
|
59
|
+
end
|
60
|
+
|
61
|
+
def to_hessian_unit(data)
|
62
|
+
clazz = data.class
|
63
|
+
Hessian2::TypeWrapper.new(java_class_name(HESSIAN_PACKAGE, clazz), to_hash_unit(data))
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_hessian(data)
|
67
|
+
clazz = data.class
|
68
|
+
Hessian2::TypeWrapper.new(java_class_name(HESSIAN_PACKAGE, clazz), to_hash_map(data))
|
69
|
+
end
|
70
|
+
|
71
|
+
def incrByCountWithDate(dateCount)
|
72
|
+
wrapper = to_hessian(dateCount)
|
73
|
+
@client.incrByCountWithDate(wrapper)
|
74
|
+
end
|
75
|
+
|
76
|
+
def incrByCount(count)
|
77
|
+
wrapper = to_hessian(count)
|
78
|
+
countResult = @client.incrByCount(wrapper)
|
79
|
+
CountResult.new(countResult)
|
80
|
+
end
|
81
|
+
|
82
|
+
def incr(name, id, count=1, date=nil)
|
83
|
+
if(date.nil?)
|
84
|
+
@client.incrBy(name,id, count)
|
85
|
+
else
|
86
|
+
@client.incrByWithDate(name, id, count, date)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def decr(name, id, count=1, date=nil)
|
91
|
+
if(date.nil?)
|
92
|
+
@client.decrBy(name, id, count)
|
93
|
+
else
|
94
|
+
@client.decrByWithDate(name, id, count, date)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def decrByCount(count)
|
99
|
+
wrapper = to_hessian(count)
|
100
|
+
count_result = @client.decrByCount(wrapper)
|
101
|
+
CountResult.new(count_result)
|
102
|
+
end
|
103
|
+
|
104
|
+
def decrByCountWithDate(dateCount)
|
105
|
+
wrapper = to_hessian(dateCount)
|
106
|
+
@client.decrByCountWithDate(wrapper)
|
107
|
+
end
|
108
|
+
|
109
|
+
def setByCountWithDate(dateCount)
|
110
|
+
wrapper = to_hessian(dateCount)
|
111
|
+
@client.setByCountWithDate(wrapper)
|
112
|
+
end
|
113
|
+
|
114
|
+
def setByCount(count)
|
115
|
+
wrapper = to_hessian(count)
|
116
|
+
@client.setByCount(wrapper)
|
117
|
+
end
|
118
|
+
|
119
|
+
def set(name,id, value, date=nil)
|
120
|
+
if(date.nil?)
|
121
|
+
@client.set(name, id, value)
|
122
|
+
else
|
123
|
+
@client.setWithDate(name,id, value,date)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def reset(name, id, limit=1)
|
128
|
+
@client.resetByLimit(name, id, limit)
|
129
|
+
end
|
130
|
+
|
131
|
+
def get(name, id, limit=1)
|
132
|
+
@client.getByLimit(name, id, limit)
|
133
|
+
end
|
134
|
+
|
135
|
+
def getByNames(name, id, limit=1)
|
136
|
+
@client.getByNamesAndLimit(name, id, limit)
|
137
|
+
end
|
138
|
+
|
139
|
+
def getByIds(name, ids, limit=1)
|
140
|
+
@client.getByIdsAndLimit(name, ids, limit)
|
141
|
+
end
|
142
|
+
|
143
|
+
def getByQuery(query)
|
144
|
+
wrapper = to_hessian(query)
|
145
|
+
countResult = @client.getByQuery(wrapper)
|
146
|
+
CountResult.new(countResult)
|
147
|
+
end
|
148
|
+
|
149
|
+
def getByDateQuery(dateQuery)
|
150
|
+
wrapper = to_hessian(dateQuery)
|
151
|
+
countResult = @client.getByDateQuery(wrapper)
|
152
|
+
CountResult.new(countResult)
|
153
|
+
end
|
154
|
+
|
155
|
+
def delByQuery(query)
|
156
|
+
wrapper = to_hessian(query)
|
157
|
+
@client.delByQuery(wrapper)
|
158
|
+
end
|
159
|
+
|
160
|
+
def delByDateQuery(dateQuery)
|
161
|
+
wrapper = to_hessian(dateQuery)
|
162
|
+
@client.delByDateQuery(wrapper)
|
163
|
+
end
|
164
|
+
|
165
|
+
private
|
166
|
+
def init(hessian_url)
|
167
|
+
@@logger.info("Init Stat count client connect to hessian url: #{hessian_url}")
|
168
|
+
begin
|
169
|
+
@client = Hessian2::HessianClient.new(@hessian_url)
|
170
|
+
rescue => err
|
171
|
+
@@logger.error("init hessian service fails!, #{err}")
|
172
|
+
raise err
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#encoding: UTF-8
|
2
|
+
|
3
|
+
require "logger"
|
4
|
+
require "stat-count-client/config_loader"
|
5
|
+
require "monitor"
|
6
|
+
|
7
|
+
class LoggerFactory
|
8
|
+
include ConfigLoader
|
9
|
+
@@logger = nil
|
10
|
+
def self.getLogger(name)
|
11
|
+
if @@logger.nil?
|
12
|
+
@monitor = Monitor.new
|
13
|
+
@monitor.synchronize do
|
14
|
+
if @@logger.nil?
|
15
|
+
log_path = CONFIG['log.file.'+name];
|
16
|
+
if(log_path.nil?)
|
17
|
+
log_path = "../log"
|
18
|
+
end
|
19
|
+
|
20
|
+
log_level = CONFIG['log.level.'+name]
|
21
|
+
if(log_level.nil?)
|
22
|
+
log_level = "error";
|
23
|
+
end
|
24
|
+
logger = Logger.new(log_path,'daily')
|
25
|
+
logger.level = Logger::const_get(log_level.upcase)
|
26
|
+
@@logger = logger;
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
@@logger
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
module Stat
|
2
|
+
module Count
|
3
|
+
module Data
|
4
|
+
class QueryUnit
|
5
|
+
attr :id, true
|
6
|
+
attr :limit, true
|
7
|
+
end
|
8
|
+
|
9
|
+
class CountUnit
|
10
|
+
attr :id, true
|
11
|
+
attr :count, true
|
12
|
+
end
|
13
|
+
|
14
|
+
class DateQueryUnit < QueryUnit
|
15
|
+
attr :fromDate, true
|
16
|
+
attr :toDate, true
|
17
|
+
end
|
18
|
+
|
19
|
+
class DateCountUnit < CountUnit
|
20
|
+
attr :date, true
|
21
|
+
end
|
22
|
+
|
23
|
+
class SimpleCount
|
24
|
+
attr_accessor :counts
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
@counts = Hash.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def addCount(name, id, count=1, countUnit=nil)
|
31
|
+
countUnitList = @counts[name]
|
32
|
+
if (countUnitList.nil?)
|
33
|
+
countUnitList = Array.new
|
34
|
+
@counts[name] = countUnitList
|
35
|
+
end
|
36
|
+
|
37
|
+
if (countUnit.nil?)
|
38
|
+
countUnit = CountUnit.new
|
39
|
+
end
|
40
|
+
countUnit.id = id
|
41
|
+
countUnit.count = count
|
42
|
+
countUnitList << countUnit
|
43
|
+
self
|
44
|
+
end
|
45
|
+
|
46
|
+
def getCounts
|
47
|
+
@counts
|
48
|
+
end
|
49
|
+
|
50
|
+
def getCountsSize
|
51
|
+
@counts.length
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class DateCount < SimpleCount
|
56
|
+
def addCountWithDate(name, id, count=1, date=Time.now)
|
57
|
+
dateCountUnit = DateCountUnit.new
|
58
|
+
dateCountUnit.date = date
|
59
|
+
addCount(name, id, count, dateCountUnit)
|
60
|
+
self
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class SimpleCountQuery
|
65
|
+
|
66
|
+
attr_accessor :queries
|
67
|
+
|
68
|
+
def initialize
|
69
|
+
@queries = Hash.new
|
70
|
+
end
|
71
|
+
|
72
|
+
def addQuery(name, id, limit=1, queryUnit=nil)
|
73
|
+
queryUnitList = @queries[name]
|
74
|
+
|
75
|
+
if(queryUnitList.nil?)
|
76
|
+
queryUnitList = Array.new
|
77
|
+
@queries[name] = queryUnitList
|
78
|
+
end
|
79
|
+
|
80
|
+
if(queryUnit.nil?)
|
81
|
+
queryUnit = QueryUnit.new
|
82
|
+
end
|
83
|
+
|
84
|
+
queryUnit.id = id
|
85
|
+
queryUnit.limit = limit
|
86
|
+
queryUnitList << queryUnit
|
87
|
+
self
|
88
|
+
end
|
89
|
+
|
90
|
+
def getQueries
|
91
|
+
@queries
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
class DateCountQuery < SimpleCountQuery
|
96
|
+
def addQueryWithDate(name, id, fromDate, toDate, limit=1)
|
97
|
+
queryUnit = DateQueryUnit.new
|
98
|
+
queryUnit.fromDate = fromDate
|
99
|
+
queryUnit.toDate = toDate
|
100
|
+
addQuery(name, id, limit, queryUnit)
|
101
|
+
self
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
class CountResult
|
106
|
+
attr_accessor :countResults
|
107
|
+
|
108
|
+
def initialize(hash)
|
109
|
+
@countResults = hash['countResults']
|
110
|
+
end
|
111
|
+
|
112
|
+
def getResult(name=nil, id=nil)
|
113
|
+
if(name.nil?)
|
114
|
+
return @countResults
|
115
|
+
end
|
116
|
+
|
117
|
+
countHash = @countResults[name]
|
118
|
+
if(countHash.nil?)
|
119
|
+
raise ArgumentError,"服务的名称: " + name + " 不存在!"
|
120
|
+
end
|
121
|
+
|
122
|
+
if (id.nil?)
|
123
|
+
return countHash
|
124
|
+
end
|
125
|
+
|
126
|
+
count = countHash[id]
|
127
|
+
if(count.nil?)
|
128
|
+
raise ArgumentError,"业务ID: "+id +" 不存在"
|
129
|
+
end
|
130
|
+
count
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,209 @@
|
|
1
|
+
#
|
2
|
+
# Autogenerated by Thrift Compiler (0.9.0)
|
3
|
+
#
|
4
|
+
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'thrift'
|
8
|
+
|
9
|
+
module Stat
|
10
|
+
module Count
|
11
|
+
module Thrift
|
12
|
+
class Record
|
13
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
14
|
+
RECORDMAP = 1
|
15
|
+
|
16
|
+
FIELDS = {
|
17
|
+
RECORDMAP => {:type => ::Thrift::Types::MAP, :name => 'recordMap', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}
|
18
|
+
}
|
19
|
+
|
20
|
+
def struct_fields; FIELDS; end
|
21
|
+
|
22
|
+
def validate
|
23
|
+
end
|
24
|
+
|
25
|
+
::Thrift::Struct.generate_accessors self
|
26
|
+
end
|
27
|
+
|
28
|
+
class CountUnit
|
29
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
30
|
+
ID = 1
|
31
|
+
COUNT = 2
|
32
|
+
|
33
|
+
FIELDS = {
|
34
|
+
ID => {:type => ::Thrift::Types::STRING, :name => 'id'},
|
35
|
+
COUNT => {:type => ::Thrift::Types::I32, :name => 'count'}
|
36
|
+
}
|
37
|
+
|
38
|
+
def struct_fields; FIELDS; end
|
39
|
+
|
40
|
+
def validate
|
41
|
+
end
|
42
|
+
|
43
|
+
::Thrift::Struct.generate_accessors self
|
44
|
+
end
|
45
|
+
|
46
|
+
class SimpleCount
|
47
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
48
|
+
COUNTS = 1
|
49
|
+
|
50
|
+
FIELDS = {
|
51
|
+
COUNTS => {:type => ::Thrift::Types::MAP, :name => 'counts', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => ::Stat::Count::Thrift::CountUnit}}}
|
52
|
+
}
|
53
|
+
|
54
|
+
def struct_fields; FIELDS; end
|
55
|
+
|
56
|
+
def validate
|
57
|
+
end
|
58
|
+
|
59
|
+
::Thrift::Struct.generate_accessors self
|
60
|
+
end
|
61
|
+
|
62
|
+
class DateCountUnit
|
63
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
64
|
+
ID = 1
|
65
|
+
COUNT = 2
|
66
|
+
TIMEMILLS = 3
|
67
|
+
|
68
|
+
FIELDS = {
|
69
|
+
ID => {:type => ::Thrift::Types::STRING, :name => 'id'},
|
70
|
+
COUNT => {:type => ::Thrift::Types::I32, :name => 'count'},
|
71
|
+
TIMEMILLS => {:type => ::Thrift::Types::I64, :name => 'timeMills'}
|
72
|
+
}
|
73
|
+
|
74
|
+
def struct_fields; FIELDS; end
|
75
|
+
|
76
|
+
def validate
|
77
|
+
end
|
78
|
+
|
79
|
+
::Thrift::Struct.generate_accessors self
|
80
|
+
end
|
81
|
+
|
82
|
+
class DateCount
|
83
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
84
|
+
COUNTS = 1
|
85
|
+
|
86
|
+
FIELDS = {
|
87
|
+
COUNTS => {:type => ::Thrift::Types::MAP, :name => 'counts', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => ::Stat::Count::Thrift::DateCountUnit}}}
|
88
|
+
}
|
89
|
+
|
90
|
+
def struct_fields; FIELDS; end
|
91
|
+
|
92
|
+
def validate
|
93
|
+
end
|
94
|
+
|
95
|
+
::Thrift::Struct.generate_accessors self
|
96
|
+
end
|
97
|
+
|
98
|
+
class QueryDateUnit
|
99
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
100
|
+
ID = 1
|
101
|
+
LIMIT = 2
|
102
|
+
FROMDATE = 3
|
103
|
+
TODATE = 4
|
104
|
+
|
105
|
+
FIELDS = {
|
106
|
+
ID => {:type => ::Thrift::Types::STRING, :name => 'id'},
|
107
|
+
LIMIT => {:type => ::Thrift::Types::I32, :name => 'limit'},
|
108
|
+
FROMDATE => {:type => ::Thrift::Types::I64, :name => 'fromDate'},
|
109
|
+
TODATE => {:type => ::Thrift::Types::I64, :name => 'toDate'}
|
110
|
+
}
|
111
|
+
|
112
|
+
def struct_fields; FIELDS; end
|
113
|
+
|
114
|
+
def validate
|
115
|
+
end
|
116
|
+
|
117
|
+
::Thrift::Struct.generate_accessors self
|
118
|
+
end
|
119
|
+
|
120
|
+
class DateCountQuery
|
121
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
122
|
+
QUERIES = 1
|
123
|
+
|
124
|
+
FIELDS = {
|
125
|
+
QUERIES => {:type => ::Thrift::Types::MAP, :name => 'queries', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => ::Stat::Count::Thrift::QueryDateUnit}}}
|
126
|
+
}
|
127
|
+
|
128
|
+
def struct_fields; FIELDS; end
|
129
|
+
|
130
|
+
def validate
|
131
|
+
end
|
132
|
+
|
133
|
+
::Thrift::Struct.generate_accessors self
|
134
|
+
end
|
135
|
+
|
136
|
+
class QueryUnit
|
137
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
138
|
+
ID = 1
|
139
|
+
LIMIT = 2
|
140
|
+
|
141
|
+
FIELDS = {
|
142
|
+
ID => {:type => ::Thrift::Types::STRING, :name => 'id'},
|
143
|
+
LIMIT => {:type => ::Thrift::Types::I32, :name => 'limit'}
|
144
|
+
}
|
145
|
+
|
146
|
+
def struct_fields; FIELDS; end
|
147
|
+
|
148
|
+
def validate
|
149
|
+
end
|
150
|
+
|
151
|
+
::Thrift::Struct.generate_accessors self
|
152
|
+
end
|
153
|
+
|
154
|
+
class SimpleCountQuery
|
155
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
156
|
+
QUERIES = 1
|
157
|
+
|
158
|
+
FIELDS = {
|
159
|
+
QUERIES => {:type => ::Thrift::Types::MAP, :name => 'queries', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => ::Stat::Count::Thrift::QueryUnit}}}
|
160
|
+
}
|
161
|
+
|
162
|
+
def struct_fields; FIELDS; end
|
163
|
+
|
164
|
+
def validate
|
165
|
+
end
|
166
|
+
|
167
|
+
::Thrift::Struct.generate_accessors self
|
168
|
+
end
|
169
|
+
|
170
|
+
class CountResult
|
171
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
172
|
+
COUNTRESULTS = 1
|
173
|
+
|
174
|
+
FIELDS = {
|
175
|
+
COUNTRESULTS => {:type => ::Thrift::Types::MAP, :name => 'countResults', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::MAP, :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::I64}}}
|
176
|
+
}
|
177
|
+
|
178
|
+
def struct_fields; FIELDS; end
|
179
|
+
|
180
|
+
def validate
|
181
|
+
end
|
182
|
+
|
183
|
+
::Thrift::Struct.generate_accessors self
|
184
|
+
end
|
185
|
+
|
186
|
+
class DataCollectionException < ::Thrift::Exception
|
187
|
+
include ::Thrift::Struct, ::Thrift::Struct_Union
|
188
|
+
def initialize(message=nil)
|
189
|
+
super()
|
190
|
+
self.message = message
|
191
|
+
end
|
192
|
+
|
193
|
+
MESSAGE = 1
|
194
|
+
|
195
|
+
FIELDS = {
|
196
|
+
MESSAGE => {:type => ::Thrift::Types::STRING, :name => 'message'}
|
197
|
+
}
|
198
|
+
|
199
|
+
def struct_fields; FIELDS; end
|
200
|
+
|
201
|
+
def validate
|
202
|
+
end
|
203
|
+
|
204
|
+
::Thrift::Struct.generate_accessors self
|
205
|
+
end
|
206
|
+
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|