class AssMaintainer::InfoBase::ServerIb::EnterpriseServers::Cluster

@api private Object descrbed 1C cluster

Constants

DEF_PORT

Deafult 1C:Enterprise cluster TCP port

Public Instance Methods

alive_wprocess_get() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 96
def alive_wprocess_get
  wp_info = wprocesses.select{|p| p.Running == 1 && p.ping?}[0]
  fail 'No alive working processes found' unless wp_info
  wp_info
end
attach(agent) click to toggle source

Attache cluster into server agent @param agent [ServerAgent] @raise (see authenticate)

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 23
def attach(agent)
  @sagent = agent unless @sagent
  ole_set
  authenticate
end
authenticate() click to toggle source

Authenticate cluster user @raise (see ole)

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 46
def authenticate
  sagent.Authenticate(ole, user.to_s, password.to_s)
  self
end
default_port() click to toggle source

@return [String] {DEF_PORT}

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 16
def default_port
  DEF_PORT
end
drop_infobase!(infobase_wrapper, mode) click to toggle source

Delete infobase @param infobase_wrapper [InfoBaseWrapper] infobase wrapper @param mode [Symbol] defines what should do with

infobase's database. See {WpConnection::DROP_MODES}
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 106
def drop_infobase!(infobase_wrapper, mode)
  wp_connection(infobase_wrapper).drop_infobase!(mode)
end
infobase_sessions(ib_name) click to toggle source

@return [nil Array<Wrappers::Session>] sessions for infobase runned in cluster. nil if infobase ib_name not registred in cluster. @param ib_name [String] infobase name @raise (see sagent)

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 70
def infobase_sessions(ib_name)
  ib = infobase_find(ib_name)
  return unless ib
  sagent.GetInfoBaseSessions(ole, ib).map do |s|
    Wrappers::Session.new(s, self)
  end
end
infobases() click to toggle source

@return [Array<WIN32OLE>] aray of IInfoBaseShort ole objects registred in cluster @raise (see ole) @raise (see sagent)

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 61
def infobases
  sagent.GetInfoBases(ole)
end
ole() click to toggle source

@return IClusterInfo ole object @raise [RuntimeError] if cluster not found on {#sagent} server

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 38
def ole
  fail ArgumentError, "Cluster `#{host_port}'"\
    " not found on server `#{sagent.host_port}'" unless @ole
  @ole
end
sagent() click to toggle source

@return [ServerAgent] which cluster attached @raise [RuntimeError] unless cluster attached

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 31
def sagent
  fail 'Cluster must be attachet to ServerAgent' unless @sagent
  @sagent
end
wp_connection(infobase_wrapper) click to toggle source

Connect to working process @return [WpConnection] object for comunication with 1C Working

process
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 89
def wp_connection(infobase_wrapper)
  if !@wp_connection.nil? && !@wp_connection.ping?
    @wp_connection = nil
  end
  @wp_connection ||= alive_wprocess_get.connect(infobase_wrapper)
end
wprocesses() click to toggle source

All Working processes in cluster @return [Array<Wrappers::WorkingProcessInfo]

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 80
def wprocesses
  sagent.GetWorkingProcesses(ole).map do |wpi|
    Wrappers::WorkingProcessInfo.new(wpi, self)
  end
end

Private Instance Methods

ole_set() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/cluster.rb, line 51
def ole_set
  @ole = sagent.cluster_find(host, port)
  ole
end