ScriptTool.go

package saseul

import (
	"staff"
)

// ScriptTool μΈν„°νŽ˜μ΄μŠ€λŠ” μž¬μ‹œμž‘ κΈ°λŠ₯을 μ •μ˜ν•©λ‹ˆλ‹€.
type ScriptTool interface {
	Restart(func())
}

// scriptTool κ΅¬μ‘°μ²΄λŠ” ScriptTool μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•©λ‹ˆλ‹€.
type scriptTool struct{}

// NewScriptTool ν•¨μˆ˜λŠ” ScriptTool μΈν„°νŽ˜μ΄μŠ€μ˜ μƒˆ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
func NewScriptTool() ScriptTool {
	return &scriptTool{}
}

// Restart λ©”μ„œλ“œλŠ” μ£Όμ–΄μ§„ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ„œλ²„λ‚˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό μž¬μ‹œμž‘ν•©λ‹ˆλ‹€.
func (st *scriptTool) Restart(f func()) {
	isRunning := staff.ProcessManager.IsRunning(staff.Master)

	if isRunning {
		stop := &staff.Stop{}
		stop.Main()
	}

	f()

	if isRunning {
		start := &staff.Start{}
		start.Main()
	}
}

주석 μ„€λͺ…

  • Go μ–Έμ–΄ μ½”λ“œ μ„€λͺ…:

    • ScriptTool μΈν„°νŽ˜μ΄μŠ€: Restart λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜μ—¬ μž¬μ‹œμž‘ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

    • scriptTool ꡬ쑰체: ScriptTool μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•©λ‹ˆλ‹€.

    • NewScriptTool ν•¨μˆ˜: ScriptTool μΈν„°νŽ˜μ΄μŠ€μ˜ μƒˆ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

    • Restart λ©”μ„œλ“œ: μ£Όμ–΄μ§„ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ„œλ²„λ‚˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό μž¬μ‹œμž‘ν•©λ‹ˆλ‹€. Go μ–Έμ–΄μ—μ„œλŠ” 콜백 ν•¨μˆ˜λ₯Ό 직접 μ‚¬μš©ν•˜μ—¬ μž¬μ‹œμž‘ ν•¨μˆ˜λ₯Ό μ „λ‹¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

    • staff νŒ¨ν‚€μ§€: PHPμ—μ„œμ˜ Saseul\Staff λ„€μž„μŠ€νŽ˜μ΄μŠ€κ°€ staff νŒ¨ν‚€μ§€λ‘œ λ³€ν™˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. staff.ProcessManager.IsRunning 및 staff.Start와 staff.Stop ν΄λž˜μŠ€λŠ” ν•΄λ‹Ή νŒ¨ν‚€μ§€ λ‚΄μ˜ κ΅¬ν˜„μ²΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

Last updated