Class: Riser::RootProcess::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.



39
40
41
42
43
44
45
# File 'lib/riser/daemon.rb', line 39

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



83
84
85
86
87
88
89
90
91
# File 'lib/riser/daemon.rb', line 83

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



93
94
95
96
97
98
99
100
101
# File 'lib/riser/daemon.rb', line 93

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



153
154
155
156
157
158
159
160
161
162
# File 'lib/riser/daemon.rb', line 153

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



133
134
135
136
137
138
139
140
141
# File 'lib/riser/daemon.rb', line 133

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



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/riser/daemon.rb', line 47

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

  server_address = SocketAddress.parse(address_config)
  unless (server_address) then
    @logger.error("failed to parse server address: #{address_config.inspect}")
  end
  server_address
end

#get_server_socket(server_address) ⇒ Object



63
64
65
66
67
68
69
70
71
# File 'lib/riser/daemon.rb', line 63

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

#gets(io) ⇒ Object



143
144
145
146
147
148
149
150
151
# File 'lib/riser/daemon.rb', line 143

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



73
74
75
76
77
78
79
80
81
# File 'lib/riser/daemon.rb', line 73

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



123
124
125
126
127
128
129
130
131
# File 'lib/riser/daemon.rb', line 123

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



103
104
105
106
107
108
109
110
111
# File 'lib/riser/daemon.rb', line 103

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


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

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



113
114
115
116
117
118
119
120
121
# File 'lib/riser/daemon.rb', line 113

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