StartMining.go

package script

import (
	"fmt"

	"saseul/datasource/poolclient"
)

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

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

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

	// ์ฑ„๊ตด์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์ •์ฑ…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
	result := poolclient.Instance().SetPolicy("mining", true)

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

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

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

  • script ํŒจํ‚ค์ง€์— ์†ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

  • ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์ž„ํฌํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    • fmt: ํฌ๋งทํŒ…๊ณผ ์ถœ๋ ฅ์„ ์œ„ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

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

StartMining ๊ตฌ์กฐ์ฒด

  • StartMining ๊ตฌ์กฐ์ฒด๋Š” ๋งˆ์ด๋‹์„ ์‹œ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

  • Description: ๊ตฌ์กฐ์ฒด์˜ ๊ธฐ๋Šฅ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

NewStartMining ํ•จ์ˆ˜

  • NewStartMining ํ•จ์ˆ˜๋Š” ์ƒˆ๋กœ์šด StartMining ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • Description ํ•„๋“œ์—๋Š” "Start mining."๋ผ๋Š” ์„ค๋ช…์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

Main ๋ฉ”์„œ๋“œ

  • Main ๋ฉ”์„œ๋“œ๋Š” StartMining ๊ตฌ์กฐ์ฒด์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • "Starting mining ..." ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ๋งˆ์ด๋‹ ์‹œ์ž‘์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

  • poolclient.Instance().SetPolicy("mining", true)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋งˆ์ด๋‹ ์ •์ฑ…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋งˆ์ด๋‹์„ ์‹œ์ž‘ํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฒฐ๊ณผ(result)๊ฐ€ true๋ฉด "Mining has started successfully."์™€ ํ•จ๊ป˜ ๋งˆ์ด๋‹์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ด๋‹ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์— "saseul-script info"๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ์•ˆ๋‚ด๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฒฐ๊ณผ๊ฐ€ false๋ฉด "Failed to start mining."๊ณผ ํ•จ๊ป˜ ๋งˆ์ด๋‹ ์‹œ์ž‘์— ์‹คํŒจํ–ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์•ˆ๋‚ด๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

main ํ•จ์ˆ˜

  • main ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ง„์ž…์ ์ž…๋‹ˆ๋‹ค.

  • NewStartMining()์„ ํ˜ธ์ถœํ•˜์—ฌ StartMining ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , Main() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ์š”์•ฝ

์ด ์ฝ”๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ด๋‹์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. StartMining ๊ตฌ์กฐ์ฒด๋Š” ๋งˆ์ด๋‹์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์ด๋‹ ์ •์ฑ…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ด๋‹์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ , ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์ ์ ˆํ•œ ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š”์„ฑ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

Last updated