Class: Riser::SystemOperation

Inherits:
Object
  • Object
show all
Defined in:
lib/riser/daemon.rb

Instance Method Summary collapse

Constructor Details

#initialize(logger, module_FileUtils: FileUtils, module_Process: Process, class_IO: IO, class_File: File) ⇒ SystemOperation

Returns a new instance of SystemOperation.



48
49
50
51
52
53
54
# File 'lib/riser/daemon.rb', line 48

def initialize(logger, module_FileUtils: FileUtils, module_Process: Process, class_IO: IO, class_File: File)
  @logger = logger
  @FileUtils = module_FileUtils
  @Process = module_Process
  @IO = class_IO
  @File = class_File
end

Instance Method Details

#chmod(mode, path) ⇒ Object



106
107
108
109
110
111
112
113
114
# File 'lib/riser/daemon.rb', line 106

def chmod(mode, path)
  begin
    @FileUtils.chmod(mode, path)
  rescue
    @logger.error("failed to chmod(2): #{'%04o' % mode} #{path} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#chown(owner, group, path) ⇒ Object



116
117
118
119
120
121
122
123
124
# File 'lib/riser/daemon.rb', line 116

def chown(owner, group, path)
  begin
    @FileUtils.chown(owner, group, path)
  rescue
    @logger.error("failed to chown(2): <#{owner}> <#{group}> <#{path}> [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#close(io) ⇒ Object



176
177
178
179
180
181
182
183
184
185
# File 'lib/riser/daemon.rb', line 176

def close(io)
  begin
    io.close
    io
  rescue
    @logger.error("failed to close(2) #{io.inspect} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#forkObject



156
157
158
159
160
161
162
163
164
# File 'lib/riser/daemon.rb', line 156

def fork
  begin
    @Process.fork{ yield }
  rescue
    @logger.error("failed to fork(2) [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#get_server_address(sockaddr_get) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/riser/daemon.rb', line 56

def get_server_address(sockaddr_get)
  begin
    address_config = sockaddr_get.call
  rescue
    @logger.error("failed to get server address [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    return
  end

  begin
    server_address = SocketAddress.parse(address_config)
  rescue
    @logger.error("failed to parse server address: #{address_config.inspect} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    return
  end

  server_address
end

#get_server_socket(server_address) ⇒ Object



76
77
78
79
80
81
82
83
84
# File 'lib/riser/daemon.rb', line 76

def get_server_socket(server_address)
  begin
    server_address.open_server
  rescue
    @logger.error("failed to open server socket: #{server_address} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#get_sockaddr(server_socket) ⇒ Object



86
87
88
89
90
91
92
93
94
# File 'lib/riser/daemon.rb', line 86

def get_sockaddr(server_socket)
  begin
    server_socket.local_address.inspect_sockaddr
  rescue
    @logger.error("failed to get socket address: #{server_socket} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#gets(io) ⇒ Object



166
167
168
169
170
171
172
173
174
# File 'lib/riser/daemon.rb', line 166

def gets(io)
  begin
    io.gets
  rescue
    @logger.error("failed to get line from #{io.inspect} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#listen(server_socket, backlog) ⇒ Object



96
97
98
99
100
101
102
103
104
# File 'lib/riser/daemon.rb', line 96

def listen(server_socket, backlog)
  begin
    server_socket.listen(backlog)
  rescue
    @logger.error("failed to listen(2) server socket with backlog: #{backlog} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#pipeObject



146
147
148
149
150
151
152
153
154
# File 'lib/riser/daemon.rb', line 146

def pipe
  begin
    @IO.pipe
  rescue
    @logger.error("failed to pipe(2) [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#send_signal(pid, signal) ⇒ Object



126
127
128
129
130
131
132
133
134
# File 'lib/riser/daemon.rb', line 126

def send_signal(pid, signal)
  begin
    @Process.kill(signal, pid)
  rescue
    @logger.error("failed to send signal (#{signal}) to process (pid: #{pid}) [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end


187
188
189
190
191
192
193
194
195
# File 'lib/riser/daemon.rb', line 187

def unlink(path)
  begin
    File.unlink(path)
  rescue
    @logger.error("failed to unlink(2): #{path} [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end

#wait(pid, flags = 0) ⇒ Object



136
137
138
139
140
141
142
143
144
# File 'lib/riser/daemon.rb', line 136

def wait(pid, flags=0)
  begin
    @Process.wait(pid, flags)
  rescue
    @logger.error("failed to wait(2) for process (pid: #{pid}) [#{$!} (#{$!.class})]")
    @logger.debug($!) if @logger.debug?
    nil
  end
end