Class: Gisele::VM

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Lifecycle, Logging, Robustness
Defined in:
lib/gisele/vm.rb,
lib/gisele/vm/prog.rb,
lib/gisele/vm/event.rb,
lib/gisele/vm/proxy.rb,
lib/gisele/vm/errors.rb,
lib/gisele/vm/kernel.rb,
lib/gisele-vm/version.rb,
lib/gisele/vm/command.rb,
lib/gisele/vm/console.rb,
lib/gisele/vm/enacter.rb,
lib/gisele/vm/logging.rb,
lib/gisele/vm/bytecode.rb,
lib/gisele/vm/registry.rb,
lib/gisele/vm/component.rb,
lib/gisele/vm/lifecycle.rb,
lib/gisele/vm/prog_list.rb,
lib/gisele/vm/robustness.rb,
lib/gisele/vm/null_object.rb,
lib/gisele/vm/proxy/client.rb,
lib/gisele/vm/proxy/server.rb,
lib/gisele/vm/event_manager.rb,
lib/gisele/vm/kernel/runner.rb,
lib/gisele/vm/kernel/opcodes.rb,
lib/gisele/vm/prog_list/sqldb.rb,
lib/gisele/vm/bytecode/builder.rb,
lib/gisele/vm/bytecode/grammar.rb,
lib/gisele/vm/bytecode/printer.rb,
lib/gisele/vm/prog_list/memory.rb,
lib/gisele/vm/prog_list/storage.rb,
lib/gisele/vm/simulator/resumer.rb

Defined Under Namespace

Modules: Lifecycle, Logging, Proxy, Robustness, Simulator, Version Classes: BadUsageError, Bytecode, Command, Component, Console, Enacter, Error, Event, EventManager, InvalidBytecodeError, InvalidInputError, InvalidLabelError, InvalidPUIDError, InvalidStateError, Kernel, NullObject, Prog, ProgList, Registry

Constant Summary collapse

VERSION =
Version.to_s

Instance Attribute Summary collapse

Attributes included from Lifecycle

#last_error, #status

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Lifecycle

#run, #running?, #shutdown?, #stop, #stopped?, #warmup?

Methods included from Logging

#logger, #logger=

Constructor Details

#initialize(bytecode = [:gvm]) {|_self| ... } ⇒ VM

Returns a new instance of VM.

Yields:

  • (_self)

Yield Parameters:

  • _self (Gisele::VM)

    the object that the method was called on



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/gisele/vm.rb', line 29

def initialize(bytecode = [:gvm])
  @bytecode      = (Kernel.bytecode + Bytecode.coerce(bytecode)).verify!
  @registry      = Registry.new(self)
  @kernel        = Kernel.new
  @proglist      = ProgList.memory
  @event_manager = EventManager.new

  init_lifecycle

  # other registration
  yield(self) if block_given?

  # post installation of prior components
  @registry.register @event_manager, true
  @registry.register @proglist, true
  @registry.register @kernel, true
end

Instance Attribute Details

#bytecodeObject (readonly)

Returns the value of attribute bytecode.



23
24
25
# File 'lib/gisele/vm.rb', line 23

def bytecode
  @bytecode
end

#event_managerObject

Returns the value of attribute event_manager.



27
28
29
# File 'lib/gisele/vm.rb', line 27

def event_manager
  @event_manager
end

#kernelObject (readonly)

Returns the value of attribute kernel.



25
26
27
# File 'lib/gisele/vm.rb', line 25

def kernel
  @kernel
end

#proglistObject

Returns the value of attribute proglist.



26
27
28
# File 'lib/gisele/vm.rb', line 26

def proglist
  @proglist
end

#registryObject (readonly)

Returns the value of attribute registry.



24
25
26
# File 'lib/gisele/vm.rb', line 24

def registry
  @registry
end

Class Method Details

.compile(gis) ⇒ Object



51
52
53
# File 'lib/gisele/vm.rb', line 51

def self.compile(gis)
  Compiling::Gts2Bytecode.call(gts(gis))
end

.drb_client(&bl) ⇒ Object

module Proxy



59
60
61
# File 'lib/gisele/vm/proxy/client.rb', line 59

def self.drb_client(&bl)
  Proxy::Client.new.run(&bl)
end

.gts(gis) ⇒ Object



47
48
49
# File 'lib/gisele/vm.rb', line 47

def self.gts(gis)
  Compiling::Gisele2Gts.compile(gis)
end

Instance Method Details

#progs(restriction = nil) ⇒ Object



82
83
84
# File 'lib/gisele/vm.rb', line 82

def progs(restriction = nil)
  proglist.to_relation(restriction)
end

#vmObject



55
56
57
# File 'lib/gisele/vm.rb', line 55

def vm
  self
end