Class: S41C::Client

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/s41c/client.rb

Instance Method Summary collapse

Methods included from Utils

#get_1c_id, #to_bin, #to_utf8

Constructor Details

#initialize(host = 'localhost', port = 1421, timeout = 30) ⇒ Client

Создать инстанс клиента

Parameters:

  • адрес (String)

    сервера

  • порт (Integer)

    сервера (по умолчанию 1421)

  • таймаут (Integer)

    (по умолчанию 30 секунд)



14
15
16
17
18
19
20
21
22
# File 'lib/s41c/client.rb', line 14

def initialize(host='localhost', port=1421, timeout=30)
  require 'net/telnet'
  require 's41c/parser'

  @host, @port, @timeout = host, port, timeout
  @prompt = /^\+OK/n
  @errors = []

end

Instance Method Details

#disconnectObject

Отключиться от сервера



48
49
50
# File 'lib/s41c/client.rb', line 48

def disconnect
  cmd "disconnect"
end

#errorsArray

Возвращает массив ошибок

Returns:

  • (Array)

    массив ошибок



38
39
40
# File 'lib/s41c/client.rb', line 38

def errors
  @errors
end

#eval(code) ⇒ String

Выполнить на сервере строку

Parameters:

  • строка (String)

    кода

Returns:

  • (String)

    результат выполнения



75
76
77
# File 'lib/s41c/client.rb', line 75

def eval(code)
  cmd "eval\0\n#{code}\nend_of_code"
end

#login(username, password = nil) ⇒ Object

Задать данные для авторизации

Parameters:

  • логин (String)
  • пароль (String)


28
29
30
31
32
33
# File 'lib/s41c/client.rb', line 28

def (username, password = nil)
  @login = username.nil? || username.empty? ? nil : username
  @password = password

  self
end

#pingObject

Проверка соединения с сервером



43
44
45
# File 'lib/s41c/client.rb', line 43

def ping
  cmd "ping"
end

#request(vars = {}, &block) ⇒ String

Выполнить на сервере блок кода

Parameters:

  • переменные, (Hash)

    которые будут доступны внутри блока

  • блок (Proc)

    кода

Returns:

  • (String)

    результат выполнения блока



63
64
65
66
67
68
# File 'lib/s41c/client.rb', line 63

def request(vars = {}, &block)
  code = S41C::Parser.new(block).parse
  dump = Marshal.dump({vars: vars, code: code})

  self.eval [dump].pack('m')
end

#shutdownObject

Остановить сервер и отключиться от него



53
54
55
# File 'lib/s41c/client.rb', line 53

def shutdown
  cmd "shutdown"
end