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 = '0.0.0.0', port = 1421, log_file = nil) ⇒ Server

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

Parameters:

  • адрес, (String)

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

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


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

def initialize(host='0.0.0.0', 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'

  @local_storage = {}

end

Instance Method Details

#at_exit(&block) ⇒ Object

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

Parameters:

  • блок (Proc)

    кода



69
70
71
72
73
74
75
# File 'lib/s41c/server.rb', line 69

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

  self
end

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

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



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

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)


30
31
32
33
34
35
# File 'lib/s41c/server.rb', line 30

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

  self
end

#ole_name=(name) ⇒ Object

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

Parameters:

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

    ole-объекта



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

def ole_name=(name)
  @ole_name = name

  self
end

#startObject

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



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/s41c/server.rb', line 78

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

#white_list(*args) ⇒ Object

Задать IP-адреса, с которых разрешено подключение

Parameters:

  • список (Array)

    адресов



40
41
42
# File 'lib/s41c/server.rb', line 40

def white_list(*args)
  @white_list = args
end