Class: Hakuban::LocalNode

Inherits:
Object
  • Object
show all
Defined in:
lib/hakuban/hakuban.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name: nil) ⇒ LocalNode

Returns a new instance of LocalNode.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/hakuban/hakuban.rb', line 59

def initialize(name: nil)
	::Hakuban::hakuban_initialize
	@default_serializer = lambda { |data_type, data| 
		[["JSON"]+data_type, JSON.dump(data)] 
	}
	@default_deserializer = lambda { |data_type, data| 
		raise "Expected JSON serialized data, got: #{data_type}"  if data_type[0] != "JSON"
		[data_type[1..-1], JSON.load(data)] 
	}
	Hakuban::logger_initialize("hakuban=warn", true)
	result = FFI::hakuban_local_node_new(name || File.basename(caller_locations(0..1)[1].path))
	Hakuban::raise_if_error(result)
	@local_node_pointer = ::FFI::AutoPointer.new(result[:local_node_pointer], FFI::method(:hakuban_local_node_drop))
end

Instance Attribute Details

#local_node_pointerObject (readonly)

TODO: explicit drop



57
58
59
# File 'lib/hakuban/hakuban.rb', line 57

def local_node_pointer
  @local_node_pointer
end

Instance Method Details

#default_deserializer(&block) ⇒ Object



92
93
94
95
96
97
98
# File 'lib/hakuban/hakuban.rb', line 92

def default_deserializer(&block)
	if block_given?
		@default_deserializer = block
	else
		@default_deserializer
	end
end

#default_serializer(&block) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/hakuban/hakuban.rb', line 84

def default_serializer(&block)
	if block_given?
		@default_serializer = block
	else
		@default_serializer
	end
end

#object(tags, descriptor) ⇒ Object



100
101
102
103
# File 'lib/hakuban/hakuban.rb', line 100

def object(tags, descriptor)
	#TODO: accept real descriptor too
	ObjectBuilder.new(self, ObjectDescriptor.new(tags,descriptor), @default_serializer, @default_deserializer)
end

#tag(descriptor) ⇒ Object



105
106
107
108
# File 'lib/hakuban/hakuban.rb', line 105

def tag(descriptor)
	#TODO: accept real descriptor too
	TagBuilder.new(self, TagDescriptor.new(descriptor), @default_serializer, @default_deserializer)
end

#with_default_deserializer(&block) ⇒ Object



79
80
81
82
# File 'lib/hakuban/hakuban.rb', line 79

def with_default_deserializer(&block)
	@default_deserializer = block
	self
end

#with_default_serializer(&block) ⇒ Object



74
75
76
77
# File 'lib/hakuban/hakuban.rb', line 74

def with_default_serializer(&block)
	@default_serializer = block
	self
end