module AssMaintainer::InfoBase::ServerIb::EnterpriseServers::ServerAgent

@api private Object descrbed 1C server agent connection. @example

# Get 1C:Eneterprise server agent connection object and connect
# to net service
sagent = ServerAgent.new('localhost:1540', 'admin', 'password')
  .connect('~> 8.3.8.0')

# Working with server agent connection
sagent.ConnectionString #=> "tcp://localhost:1540"
cl = sagent.cluster_find 'localhost', '1542'

# Close connection
sagent.disconnect

Public Class Methods

new(host_port, user, password) click to toggle source

Make new object of anonymous class which included this module.

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 26
def self.new(host_port, user, password)
  Class.new do
    include ServerAgent
  end.new host_port, user, password
end

Public Instance Methods

authenticate() click to toggle source

Authenticate {#user} @raise if not connected

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 53
def authenticate
  AuthenticateAgent(user.to_s, password.to_s) if\
    connected? && !authenticate?
end
authenticate?() click to toggle source

True if #{user} authenticate

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 59
def authenticate?
  return false unless connected?
  begin
    ole_connector.GetAgentAdmins
  rescue WIN32OLERuntimeError
    return false
  end
  true
end
cluster_find(host, port) click to toggle source

@return [nil WIN32OLE] IClusterInfo ole object @raise if not connected

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 71
def cluster_find(host, port)
  reconnect
  GetClusters().find do |cl|
    cl.HostName.upcase == host.upcase && cl.MainPort == port.to_i
  end
end
connect(platform_require) click to toggle source

Connect to 1C:Eneterprise server via OLE @note while connecting in instance class will be included {.runtime_new} module @param platform_require [String Gem::Requirement] 1C:Eneterprise version required @return self

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 47
def connect(platform_require)
  _connect(host_port, platform_require)
end
default_port() click to toggle source

@return [String] wrapper for {InfoBase::DEFAULT_SAGENT_PORT}

# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 33
def default_port
  InfoBase::DEFAULT_SAGENT_PORT
end
platform_require() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 78
def platform_require
  return unless connected?
  ole_connector.send(:__ole_binary__).requirement.to_s
end
runtime_type() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 37
def runtime_type
  :agent
end

Private Instance Methods

_reconnect_required?() click to toggle source
# File lib/ass_maintainer/info_base/server_ib/enterprise_servers/server_agent.rb, line 83
def _reconnect_required?
  getClusters.empty?
end