StopMining.go

package script

import (
	"fmt"

	"saseul/datasource/poolclient"
)

// StopMining ๊ตฌ์กฐ์ฒด๋Š” ์ฑ„๊ตด์„ ์ค‘์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
type StopMining struct {
	Description string
}

// NewStopMining ํ•จ์ˆ˜๋Š” StopMining์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
func NewStopMining() *StopMining {
	return &StopMining{
		Description: "Stop mining.",
	}
}

// Main ํ•จ์ˆ˜๋Š” StopMining์˜ ๋ฉ”์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
func (sm *StopMining) Main() {
	fmt.Println("\nStopping mining ...")

	// ์ฑ„๊ตด ์ •์ฑ…์„ false๋กœ ์„ค์ •ํ•˜์—ฌ ์ฑ„๊ตด์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
	result := poolclient.Instance().SetPolicy("mining", false)

	if result {
		fmt.Println("Mining has stopped successfully.")
		fmt.Println(`If you want to view the status, enter "saseul-script info" in the terminal.`)
	} else {
		fmt.Println("Failed to stop mining.")
		fmt.Println(`Please restart the SASEUL service. To restart, please enter "saseul-script restart" in the terminal.`)
	}
}

// main ํ•จ์ˆ˜๋Š” StopMining์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
func main() {
	sm := NewStopMining()
	sm.Main()
}

ํŒจํ‚ค์ง€ ์„ ์–ธ ๋ฐ ์ž„ํฌํŠธ

  • package script: ์ด ํŒŒ์ผ์ด script ํŒจํ‚ค์ง€์— ์†ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  • import (...): ์ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ๋  ์™ธ๋ถ€ ํŒจํ‚ค์ง€๋“ค์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    • fmt: ํ‘œ์ค€ ์ถœ๋ ฅ ๋ฐ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํŒจํ‚ค์ง€.

    • saseul/datasource/poolclient: ๋งˆ์ด๋‹ ์ •์ฑ…์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค ํŒจํ‚ค์ง€.

StopMining ๊ตฌ์กฐ์ฒด์™€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜

  • type StopMining struct { Description string }: StopMining ๊ตฌ์กฐ์ฒด๋Š” ๋งˆ์ด๋‹์„ ์ค‘์ง€ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๋‹ด๋Š” ํ•„๋“œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • func NewStopMining() *StopMining { ... }: NewStopMining ํ•จ์ˆ˜๋Š” StopMining ๊ตฌ์กฐ์ฒด์˜ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ Description ํ•„๋“œ๋Š” "Stop mining."์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

Main ํ•จ์ˆ˜

  • func (sm *StopMining) Main() { ... }: StopMining ๊ตฌ์กฐ์ฒด์˜ Main ๋ฉ”์„œ๋“œ๋Š” ๋งˆ์ด๋‹์„ ์ค‘์ง€ํ•˜๋Š” ์ฃผ์š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • fmt.Println("\nStopping mining ..."): ๋งˆ์ด๋‹์„ ์ค‘์ง€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • result := poolclient.Instance().SetPolicy("mining", false): poolclient์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ด ๋งˆ์ด๋‹ ์ •์ฑ…์„ false๋กœ ์„ค์ •ํ•˜์—ฌ ๋งˆ์ด๋‹์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

      • poolclient.Instance(): poolclient์˜ ์‹ฑ๊ธ€ํ†ค ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

      • SetPolicy("mining", false): ๋งˆ์ด๋‹ ์ •์ฑ…์„ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • if result { ... } else { ... }: ์„ค์ • ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

      • if result: ์„ค์ •์ด ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ.

        • fmt.Println("Mining has stopped successfully."): ๋งˆ์ด๋‹์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ค‘์ง€๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

        • fmt.Println("If you want to view the status, enter "saseul-script info" in the terminal."): ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

      • else: ์„ค์ •์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ.

        • fmt.Println("Failed to stop mining."): ๋งˆ์ด๋‹ ์ค‘์ง€์— ์‹คํŒจํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

        • fmt.Println("Please restart the SASEUL service. To restart, please enter "saseul-script restart" in the terminal."): SASEUL ์„œ๋น„์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

main ํ•จ์ˆ˜

  • func main() { ... }: Go ํ”„๋กœ๊ทธ๋žจ์˜ ์ง„์ž…์ ์ธ main ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

    • sm := NewStopMining(): NewStopMining ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ StopMining ๊ตฌ์กฐ์ฒด์˜ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • sm.Main(): StopMining ๊ตฌ์กฐ์ฒด์˜ Main ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋งˆ์ด๋‹์„ ์ค‘์ง€ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์„ค๋ช…

  1. ํŒจํ‚ค์ง€ ๋ฐ ์ž„ํฌํŠธ

    • script ํŒจํ‚ค์ง€์— ์†ํ•ด ์žˆ์œผ๋ฉฐ, fmt ๋ฐ saseul/datasource/poolclient ํŒจํ‚ค์ง€๋ฅผ ์ž„ํฌํŠธํ•ฉ๋‹ˆ๋‹ค.

  2. StopMining ๊ตฌ์กฐ์ฒด

    • StopMining ๊ตฌ์กฐ์ฒด๋Š” ๋‹จ์ผ ํ•„๋“œ Description์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ด ํ•„๋“œ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

  3. NewStopMining ํ•จ์ˆ˜

    • ์ด ํ•จ์ˆ˜๋Š” ์„ค๋ช… ํ•„๋“œ๊ฐ€ "์ฑ„๊ตด์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค."๋กœ ์„ค์ •๋œ ์ƒˆ๋กœ์šด StopMining ๊ตฌ์กฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  4. StopMining ๊ตฌ์กฐ์ฒด์˜ Main ๋ฉ”์„œ๋“œ

    • ์ด ๋ฉ”์„œ๋“œ๋Š” ์ฑ„๊ตด์„ ์ค‘์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

    • ์ฑ„๊ตด ์ค‘์ง€ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • poolclient.Instance().SetPolicy("mining", false) ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฑ„๊ตด ์ค‘์ง€ ์ •์ฑ…์„ ์„ค์ •ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์Šต๋‹ˆ๋‹ค.

    • ์ฑ„๊ตด ์ค‘์ง€์— ์„ฑ๊ณตํ•˜๋ฉด ์„ฑ๊ณต ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ํ„ฐ๋ฏธ๋„์— "saseul-script info"๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ผ๋Š” ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • ์ฑ„๊ตด ์ค‘์ง€์— ์‹คํŒจํ•˜๋ฉด ์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , SASEUL ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ผ๋Š” ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  5. main ํ•จ์ˆ˜

    • main ํ•จ์ˆ˜๋Š” ์ƒˆ๋กœ์šด StopMining ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  Main ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ฑ„๊ตด ์ค‘์ง€ ๋…ผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Last updated