Module: BitShares::WSocket

Defined in:
lib/bitshares/wsocket.rb

Class Method Summary collapse

Class Method Details

.get_noticeObject



56
57
58
59
60
61
62
63
64
65
66
# File 'lib/bitshares/wsocket.rb', line 56

def get_notice
  if @msgs.key?('notice') && !@msgs['notice'].nil?
    msg = @msgs['notice']
    lock.synchronize do
      @msgs['notice'] = nil
    end
    msg
  else
    nil
  end
end

.lockObject



54
# File 'lib/bitshares/wsocket.rb', line 54

def lock() @lock ||= Mutex.new end

.send(hash) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/bitshares/wsocket.rb', line 31

def send hash
  id = hash[:id]
  count = 0
  while @msgs[id] != nil do
    sleep 0.1
    count += 1
    raise "TimeoutError..." if count > 100
  end
  @thread[:ws].send hash.to_json if @status == :connected
  count = 0
  while @msgs[id].nil? and @status == :connected do
    sleep 0.1
    count += 1
    raise "TimeoutError..." if count > 100
  end

  result = @msgs[id]
  lock.synchronize do
    @msgs[id] = nil
  end
  result
end

.startObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/bitshares/wsocket.rb', line 8

def start
  @msgs = {}
  @thread ||= Thread.new { run }
  Thread.new do
    while @status != :disconnected do
      @thread[:ws].ping 'Hi' if @status == :connected
      sleep 50
    end
  end
  count = 0
  while @status != :connected and @status != :disconnected do
    sleep 0.1
    count += 1
    raise "TimeoutError..." if count > 100
  end
end

.stopObject



27
28
29
# File 'lib/bitshares/wsocket.rb', line 27

def stop
  EventMachine.stop
end

.threadObject



25
# File 'lib/bitshares/wsocket.rb', line 25

def thread() @thread end