module AssMaintainer::InfoBase::ServerIb::EnterpriseServers::WpConnection

@api private Object for comunication with 1C Working process. @example

wp_connection = WpConnection.new(wp_info).connect(infobase_wrapper)

Constants

DROP_MODES

Drop infobase modes defines what should do with infobase's database.

  • 0 - databse willn't be deleted

  • 1 - databse will be deleted

  • 2 - database willn't be deleted but will be cleared

DeniedFrom
DeniedMessage
DeniedTo
Name
PermissionCode
ScheduledJobsDenied
SessionsDenied

Attributes

infobase_wrapper[R]
wp_info[R]

Public Class Methods

new(wp_info) click to toggle source

Make new object of anonymous class which included this module. @param wp_info (see initialize)

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 23
def self.new(wp_info)
  Class.new do
    include WpConnection
  end.new wp_info
end
new(wp_info) click to toggle source

@param wp_info [Wrappers::WorkingProcessInfo]

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 34
def initialize(wp_info)
  @wp_info = wp_info
end

Public Instance Methods

_reconnect_required?() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 180
def _reconnect_required?
  getInfoBases.empty?
end
authenticate() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 76
def authenticate
  AuthenticateAdmin(cluster.user.to_s, cluster.password.to_s)
  authenticate_infobase_admin
end
authenticate?() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 93
def authenticate?
  false
end
authenticate_infobase_admin() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 81
def authenticate_infobase_admin
  AddAuthentication(user, pass)
  ole_connector.GetInfoBaseConnections(ib_info_create)
  true
end
cluster() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 46
def cluster
  wp_info.cluster
end
connect(infobase_wrapper) click to toggle source

@param infobase_wrapper [InfoBaseWrapper]

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 67
def connect(infobase_wrapper)
  @infobase_wrapper = infobase_wrapper
  _connect host_port, sagent.platform_require
end
connections() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 118
def connections
  GetInfoBaseConnections(infobase_info)
end
drop_connections() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 140
def drop_connections
  connections.each do |conn|
    Disconnect(conn)
  end
end
drop_infobase!(mode) click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 101
def drop_infobase!(mode)
  fail ArgumentError, "Invalid mode #{mode}" unless DROP_MODES[mode]
  lock_infobase!(nil, nil, "BEFORE DROP INFOBASE", '')
  DropInfoBase(infobase_info, DROP_MODES[mode])
end
drop_sessions() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 134
def drop_sessions
  infobase_wrapper.sessions.each do |sess|
    sess.terminate
  end
end
host_port() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 50
def host_port
  "#{wp_info.HostName}:#{wp_info.MainPort}"
end
ib_info_create() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 87
def ib_info_create
  ii = createInfoBaseInfo
  ii.Name = ib_ref
  ii
end
ib_ref() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 72
def ib_ref
  infobase_wrapper.ib_ref
end
infobase_exists?() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 97
def infobase_exists?
  infobase_include? ib_ref
end
infobase_info() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 107
def infobase_info
  fail 'Infobase not exists' unless infobase_exists?
  authenticate_infobase_admin
  infobase_find ib_ref
end
infobases() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 175
def infobases
  reconnect
  getInfoBases
end
lock_infobase!(from, to, code, mess) click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 146
def lock_infobase!(from, to, code, mess)
  lock_sessions!(from, to, code, mess)
  lock_schjobs!
  drop_sessions
  drop_connections
end
lock_schjobs!() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 163
def lock_schjobs!
  ii = infobase_info
  ii.ScheduledJobsDenied = true
  UpdateInfoBase(ii)
end
lock_sessions!(from, to, code, mess) click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 122
def lock_sessions!(from, to, code, mess)
  fail ArgumentError, 'Permission code won\'t be empty' if\
    code.to_s.empty?
  ii = infobase_info
  ii.DeniedFrom = (from.nil? ? Date.parse('1973.09.07') : from).to_time
  ii.DeniedTo   = (to.nil? ? Date.parse('2073.09.07') : to).to_time
  ii.DeniedMessage = mess.to_s
  ii.SessionsDenied = true
  ii.PermissionCode = code
  UpdateInfoBase(ii)
end
locked?() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 113
def locked?
  ii = infobase_info
  ii.SessionsDenied
end
pass() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 58
def pass
  infobase_wrapper.ib.pwd.to_s
end
ping?() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 62
def ping?
  wp_info.ping?
end
raise_unless_unlock_possable(err, unlock_code) click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 185
def raise_unless_unlock_possable(err, unlock_code)
  ii = infobase_info
  return if !ii.SessionsDenied
  return if ii.PermissionCode.to_s.empty?
  return if unlock_code.to_s.downcase == ii.PermissionCode
    .to_s.downcase
  fail err, "Infobase is locked and PermissionCode:"\
    " `#{ii.PermissionCode}' not match unlock_code: `#{unlock_code}'"
end
runtime_type() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 38
def runtime_type
  :wp
end
sagent() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 42
def sagent
  wp_info.sagent
end
unlock_schjobs!() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 169
def unlock_schjobs!
  ii = infobase_info
  ii.ScheduledJobsDenied = false
  UpdateInfoBase(ii)
end
unlock_sessions!() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 153
def unlock_sessions!
  ii = infobase_info
  ii.DeniedFrom          = Date.parse('1973.09.07').to_time
  ii.DeniedTo            = Date.parse('1973.09.07').to_time
  ii.DeniedMessage       = ''
  ii.SessionsDenied      = false
  ii.PermissionCode      = ''
  UpdateInfoBase(ii)
end
user() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/wp_connection.rb, line 54
def user
  infobase_wrapper.ib.usr.to_s
end