Class: S41C::Server

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

Instance Method Summary collapse

Methods included from Utils

#get_1c_id, #to_bin, #to_utf8

Constructor Details

#initialize(host = 'localhost', port = 1421, log_file = nil) ⇒ Server

Создать инстанс сервера

Parameters:

  • адрес, (String)

    на котором будет запущен сервер

  • порт (Integer)
  • лог-файл (String)


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

def initialize(host='localhost', port=1421, log_file=nil)
  require 'socket'
  require 'win32ole'

  @host, @port = host, port
  @logger = log_file ? ::STDOUT.reopen(log_file, 'a') : ::STDOUT
  @ole_name = 'V77.Application'

end

Instance Method Details

#at_exit(&block) ⇒ Object

Задать блок кода, который будет выполнен при выключении сервера

Parameters:

  • блок (Proc)

    кода



60
61
62
63
64
65
66
# File 'lib/s41c/server.rb', line 60

def at_exit(&block)
  ::Kernel::at_exit do
    yield
  end

  self
end

#db(database, user = nil, password = nil) ⇒ Object

Параметры подключения к базе 1C



40
41
42
43
44
45
46
# File 'lib/s41c/server.rb', line 40

def db(database, user=nil, password=nil)
  @conn_options = "/d #{database}"
  @conn_options << " /n #{user}" if user
  @conn_options << " /p #{password}" if password

  self
end

#login(username, password) ⇒ Object

Задать данные для авторизации подключающихся клиентов

Parameters:

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


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

def (username, password)
  @login = username
  @password = password

  self
end

#ole_name=(name) ⇒ Object

Название ole-объекта, который будет использоваться для подключения к 1С

Parameters:

  • название (String)

    ole-объекта



51
52
53
54
55
# File 'lib/s41c/server.rb', line 51

def ole_name=(name)
  @ole_name = name

  self
end

#startObject

Запустить сервер



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/s41c/server.rb', line 69

def start

  ["INT", "TERM"].each do |signal|
    ::Kernel::trap(signal) {
    log "\n*** Exiting"
    exit
    }
  end

  connect_to_1c

  server = TCPServer.open(@host, @port)

  log "*** Server has been started on #{@host}:#{@port}"
  log "*** Ctrl+C for stopping"

  begin
    main_loop(server)
  rescue Errno::ECONNABORTED
    log "*** [#{Time.now}] Session aborted"
    retry
  end

end