func show_info(par string) { common.Busy_mutex.Lock() if common.BusyWith != "" { fmt.Println("Chain thread busy with:", common.BusyWith) } else { fmt.Println("Chain thread is idle") } common.Busy_mutex.Unlock() common.Last.Mutex.Lock() fmt.Println("Last Block:", common.Last.Block.BlockHash.String()) fmt.Printf("Height: %d @ %s, Diff: %.0f, Got: %s ago\n", common.Last.Block.Height, time.Unix(int64(common.Last.Block.Timestamp()), 0).Format("2006/01/02 15:04:05"), btc.GetDifficulty(common.Last.Block.Bits()), time.Now().Sub(common.Last.Time).String()) common.Last.Mutex.Unlock() network.Mutex_net.Lock() fmt.Printf("BlocksCached: %d, NetQueueSize: %d, NetConns: %d, Peers: %d\n", len(network.CachedBlocks), len(network.NetBlocks), len(network.OpenCons), peersdb.PeerDB.Count()) network.Mutex_net.Unlock() network.TxMutex.Lock() fmt.Printf("TransactionsToSend:%d, TransactionsRejected:%d, TransactionsPending:%d/%d\n", len(network.TransactionsToSend), len(network.TransactionsRejected), len(network.TransactionsPending), len(network.NetTxs)) fmt.Printf("WaitingForInputs:%d, SpentOutputs:%d, Hashrate:%s\n", len(network.WaitingForInputs), len(network.SpentOutputs), usif.GetNetworkHashRate()) network.TxMutex.Unlock() common.PrintStats() // Memory used al, sy := sys.MemUsed() fmt.Println("Heap size:", al>>20, "MB Sys mem used:", sy>>20, "MB", " QDB Extra mem:", qdb.ExtraMemoryConsumed>>20, "MB in", qdb.ExtraMemoryAllocCnt, "parts") var gs debug.GCStats debug.ReadGCStats(&gs) fmt.Println("Go version:", runtime.Version(), " LastGC:", time.Now().Sub(gs.LastGC).String(), " NumGC:", gs.NumGC, " PauseTotal:", gs.PauseTotal.String()) fmt.Println("Gocoin:", lib.Version, " Threads:", sys.UseThreads, " Uptime:", time.Now().Sub(common.StartTime).String(), " ECDSA cnt:", btc.EcdsaVerifyCnt) }
func p_home(w http.ResponseWriter, r *http.Request) { if !ipchecker(r) { return } // The handler also gets called for /favicon.ico if r.URL.Path != "/" { http.NotFound(w, r) } s := load_template("home.html") wallet.BalanceMutex.Lock() if len(wallet.MyBalance) > 0 { wal := load_template("home_wal.html") wal = strings.Replace(wal, "{TOTAL_BTC}", fmt.Sprintf("%.8f", float64(wallet.LastBalance)/1e8), 1) wal = strings.Replace(wal, "{UNSPENT_OUTS}", fmt.Sprint(len(wallet.MyBalance)), 1) s = strings.Replace(s, "<!--WALLET-->", wal, 1) } else { if wallet.MyWallet == nil { s = strings.Replace(s, "<!--WALLET-->", "You have no wallet", 1) } else { s = strings.Replace(s, "<!--WALLET-->", "Your balance is <b>zero</b>", 1) } } wallet.BalanceMutex.Unlock() s = strings.Replace(s, "<--NETWORK_HASHRATE-->", usif.GetNetworkHashRate(), 1) common.LockCfg() dat, _ := json.Marshal(&common.CFG) common.UnlockCfg() s = strings.Replace(s, "{CONFIG_FILE}", strings.Replace(string(dat), ",\"", ", \"", -1), 1) write_html_head(w, r) w.Write([]byte(s)) write_html_tail(w) }