Skip to content
Snippets Groups Projects
Select Git revision
  • 6a408ad7fe901ec04c9aa092922eca15de7c9d86
  • without_tipselection default
  • develop protected
  • fix/grafana-local-dashboard
  • wasp
  • fix/dashboard-explorer-freeze
  • master
  • feat/timerqueue
  • test/sync_debug_and_650
  • feat/sync_revamp_inv
  • wip/sync
  • tool/db-recovery
  • portcheck/fix
  • fix/synchronization
  • feat/new-dashboard-analysis
  • feat/refactored-analysis-dashboard
  • feat/new-analysis-dashboard
  • test/demo-prometheus-fpc
  • prometheus_metrics
  • wip/analysis-server
  • merge/fpc-test-value-transfer
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.3
  • v0.1.2
  • v0.1.1
  • v0.1.0
28 results

plugin.go

Blame
  • user avatar
    Wolfgang Welz authored and GitHub committed
    * configure bind and external address
    
    * Move bind and external to network
    
    * Ignore empty seed
    
    * Update default config
    
    * Add bind address config for analysis http server
    
    * Make graph config consistent
    
    * Add bind address to dashboard
    
    * Do not print config on startup
    
    * Apply suggestions from code review
    
    Co-Authored-By: default avatarLuca Moser <moser.luca@gmail.com>
    
    * Apply suggestions from code review
    
    Co-Authored-By: default avatarLuca Moser <moser.luca@gmail.com>
    
    Co-authored-by: default avatarLuca Moser <moser.luca@gmail.com>
    6a408ad7
    History
    plugin.go 1.52 KiB
    package httpserver
    
    import (
    	"errors"
    	"net/http"
    	"time"
    
    	"github.com/iotaledger/goshimmer/packages/parameter"
    	"github.com/iotaledger/goshimmer/packages/shutdown"
    	"github.com/iotaledger/hive.go/daemon"
    	"github.com/iotaledger/hive.go/logger"
    	"golang.org/x/net/context"
    	"golang.org/x/net/websocket"
    )
    
    var (
    	log        *logger.Logger
    	httpServer *http.Server
    	router     *http.ServeMux
    )
    
    const name = "Analysis HTTP Server"
    
    func Configure() {
    	log = logger.NewLogger(name)
    
    	router = http.NewServeMux()
    
    	httpServer = &http.Server{
    		Addr:    parameter.NodeConfig.GetString(CFG_BIND_ADDRESS),
    		Handler: router,
    	}
    
    	router.Handle("/datastream", websocket.Handler(dataStream))
    	router.HandleFunc("/", index)
    }
    
    func Run() {
    	log.Infof("Starting %s ...", name)
    	if err := daemon.BackgroundWorker(name, start, shutdown.ShutdownPriorityAnalysis); err != nil {
    		log.Errorf("Error starting as daemon: %s", err)
    	}
    }
    
    func start(shutdownSignal <-chan struct{}) {
    	stopped := make(chan struct{})
    	go func() {
    		log.Infof("Started %s: http://%s", name, httpServer.Addr)
    		if err := httpServer.ListenAndServe(); err != nil {
    			if !errors.Is(err, http.ErrServerClosed) {
    				log.Errorf("Error serving: %s", err)
    			}
    			close(stopped)
    		}
    	}()
    
    	select {
    	case <-shutdownSignal:
    	case <-stopped:
    	}
    
    	log.Infof("Stopping %s ...", name)
    	ctx, cancel := context.WithTimeout(context.Background(), time.Second)
    	defer cancel()
    
    	if err := httpServer.Shutdown(ctx); err != nil {
    		log.Errorf("Error stopping: %s", err)
    	}
    	log.Info("Stopping %s ... done", name)
    }