Genesis.go
package script
import (
"flag"
"fmt"
"os"
"saseul/data/tracker"
)
// AddTracker ๊ตฌ์กฐ์ฒด๋ ํผ์ด ํฌ ํผ์ด ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ํธ๋์ปค๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๋ด๋นํฉ๋๋ค.
type AddTracker struct {
Description string
}
// NewAddTracker ํจ์๋ AddTracker ๊ตฌ์กฐ์ฒด์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํํฉ๋๋ค.
func NewAddTracker() *AddTracker {
return &AddTracker{
Description: "Adding a tracker to the peer-to-peer search algorithm.",
}
}
// Main ํจ์๋ ํ๋๊ทธ๋ฅผ ํ์ฑํ๊ณ , ์ ์ ํ ํจ์๋ฅผ ํธ์ถํ์ฌ ํธ๋์ปค๋ฅผ ์ถ๊ฐํฉ๋๋ค.
func (at *AddTracker) Main() {
// peer์ p ํ๋๊ทธ๋ฅผ ์ ์ํฉ๋๋ค.
peer := flag.String("peer", "", "The peer you want to register on the tracker.")
p := flag.String("p", "", "The peer you want to register on the tracker (short form).")
// ํ๋๊ทธ๋ฅผ ํ์ฑํฉ๋๋ค.
flag.Parse()
// ํ๋๊ทธ ๊ฐ์ด ๋น์ด ์๋์ง ํ์ธํ๊ณ , ๋น์ด ์์ผ๋ฉด Help ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
if *peer == "" && *p == "" {
at.Help()
} else {
// ํ๋๊ทธ ๊ฐ์ ๋ฐ๋ผ Exec ํจ์๋ฅผ ํธ์ถํ์ฌ ํธ๋์ปค๋ฅผ ์ถ๊ฐํฉ๋๋ค.
if *peer != "" {
at.Exec(*peer)
} else {
at.Exec(*p)
}
}
}
// Exec ํจ์๋ ์ฃผ์ด์ง ํผ์ด๋ฅผ ํธ๋์ปค์ ์ถ๊ฐํ๋ ์ญํ ์ ํฉ๋๋ค.
func (at *AddTracker) Exec(peer string) {
// tracker.AddKnownHosts ํจ์๋ฅผ ํธ์ถํ์ฌ ํผ์ด๋ฅผ ํธ๋์ปค์ ์ถ๊ฐํฉ๋๋ค.
if tracker.AddKnownHosts(peer) {
fmt.Printf("\nTracker has been added: %s\n", peer)
} else {
fmt.Printf("\nInvalid peer: %s\n", peer)
}
}
// Help ํจ์๋ ํ๋ก๊ทธ๋จ ์ฌ์ฉ๋ฒ์ ์ถ๋ ฅํ๊ณ ์ข
๋ฃํฉ๋๋ค.
func (at *AddTracker) Help() {
// ํ๋๊ทธ ์ฌ์ฉ๋ฒ์ ์ถ๋ ฅํฉ๋๋ค.
flag.Usage()
// ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.
os.Exit(1)
}ํจ์ ์ค๋ช
Last updated