Class: Norikra::RPC::Handler

Inherits:
Object
  • Object
show all
Defined in:
lib/norikra/rpc/handler.rb

Instance Method Summary collapse

Constructor Details

#initialize(engine) ⇒ Handler

Returns a new instance of Handler.



10
11
12
# File 'lib/norikra/rpc/handler.rb', line 10

def initialize(engine)
  @engine = engine
end

Instance Method Details

#close(target) ⇒ Object



48
49
50
51
52
53
# File 'lib/norikra/rpc/handler.rb', line 48

def close(target)
  logging(:manage, :close, [target]){
    r = @engine.close(target)
    !!r
  }
end

#deregister(query_name) ⇒ Object



75
76
77
78
79
80
# File 'lib/norikra/rpc/handler.rb', line 75

def deregister(query_name)
  logging(:manage, :deregister, [query_name]){
    r = @engine.deregister(query_name)
    !!r
  }
end

#event(query_name) ⇒ Object



102
103
104
105
106
# File 'lib/norikra/rpc/handler.rb', line 102

def event(query_name)
  logging(:show, :event, [query_name]){
    @engine.output_pool.pop(query_name)
  }
end

#fields(target) ⇒ Object



82
83
84
85
86
# File 'lib/norikra/rpc/handler.rb', line 82

def fields(target)
  logging(:show, :fields, [target]){
    @engine.typedef_manager.field_list(target)
  }
end

#logging(type, handler, args = []) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/norikra/rpc/handler.rb', line 14

def logging(type, handler, args=[])
  if type == :manage
    debug "RPC", :handler => handler.to_s, :args => args
  else
    trace "RPC", :handler => handler.to_s, :args => args
  end

  begin
    yield
  rescue Norikra::ClientError => e
    info "ClientError #{e.class}: #{e.message}"
    raise Norikra::RPC::ClientError, e.message
  rescue => e
    error "Exception #{e.class}: #{e.message}"
    e.backtrace.each do |t|
      error "  " + t
    end
    raise Norikra::RPC::ServerError, "#{e.class}, #{e.message}"
  end
end

#logsObject



120
121
122
123
124
# File 'lib/norikra/rpc/handler.rb', line 120

def logs
  logging(:show, :logs){
    Norikra::Log.logger.buffer
  }
end

#modify(target, auto_field) ⇒ Object



55
56
57
58
59
60
# File 'lib/norikra/rpc/handler.rb', line 55

def modify(target, auto_field)
  logging(:manage, :modify, [target, auto_field]){
    r = @engine.modify(target, auto_field)
    !!r
  }
end

#open(target, fields, auto_field) ⇒ Object



41
42
43
44
45
46
# File 'lib/norikra/rpc/handler.rb', line 41

def open(target, fields, auto_field)
  logging(:manage, :open, [target, fields]){
    r = @engine.open(target, fields, auto_field)
    !!r
  }
end

#queriesObject



62
63
64
65
66
# File 'lib/norikra/rpc/handler.rb', line 62

def queries
  logging(:show, :queries){
    @engine.queries.map(&:to_hash)
  }
end

#register(query_name, query_group, expression) ⇒ Object



68
69
70
71
72
73
# File 'lib/norikra/rpc/handler.rb', line 68

def register(query_name, query_group, expression)
  logging(:manage, :register, [query_name, query_group, expression]){
    r = @engine.register(Norikra::Query.new(:name => query_name, :group => query_group, :expression => expression))
    !!r
  }
end

#reserve(target, fieldname, type) ⇒ Object



88
89
90
91
92
93
# File 'lib/norikra/rpc/handler.rb', line 88

def reserve(target, fieldname, type)
  logging(:manage, :reserve, [target, fieldname, type]){
    r = @engine.reserve(target, fieldname, type)
    !!r
  }
end

#see(query_name) ⇒ Object



108
109
110
111
112
# File 'lib/norikra/rpc/handler.rb', line 108

def see(query_name)
  logging(:show, :see, [query_name]){
    @engine.output_pool.fetch(query_name)
  }
end

#send(target, events) ⇒ Object



95
96
97
98
99
100
# File 'lib/norikra/rpc/handler.rb', line 95

def send(target, events)
  logging(:data, :send, [target, events]){
    r = @engine.send(target, events)
    !!r
  }
end

#sweep(query_group = nil) ⇒ Object



114
115
116
117
118
# File 'lib/norikra/rpc/handler.rb', line 114

def sweep(query_group=nil)
  logging(:show, :sweep){
    @engine.output_pool.sweep(query_group)
  }
end

#targetsObject



35
36
37
38
39
# File 'lib/norikra/rpc/handler.rb', line 35

def targets
  logging(:show, :targets){
    @engine.targets.map(&:to_hash)
  }
end