From 908e4498a889ca6f6b35d0c2b772589c8653c09c Mon Sep 17 00:00:00 2001 From: Brian Tiger Chow Date: Wed, 28 Jan 2015 03:07:10 -0800 Subject: [PATCH] refactor(gatewayserver) --- cmd/ipfs-gateway-fs/main.go | 57 ++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/cmd/ipfs-gateway-fs/main.go b/cmd/ipfs-gateway-fs/main.go index f1d8a7307..aa8a5a6bd 100644 --- a/cmd/ipfs-gateway-fs/main.go +++ b/cmd/ipfs-gateway-fs/main.go @@ -66,38 +66,49 @@ func run() error { defer node.Close() if *performGC { - go func() { - for _ = range time.Tick(*garbageCollectInterval) { - if err := corerepo.GarbageCollect(node, ctx); err != nil { - log.Println("failed to run garbage collection", err) - } - } - }() + if err := runGarbageCollectorWorker(ctx, node); err != nil { + return err + } } if *assetsPath != "" { - fi, err := os.Stat(*assetsPath) - if err != nil { + if err := runFileServerWorker(ctx, node); err != nil { return err } - if !fi.IsDir() { - return errors.New("asset path must be a directory") - } - go func() { - for _ = range time.Tick(*refreshAssetsInterval) { - _, err := coreunix.AddR(node, *assetsPath) - if err != nil { - log.Println(err) - } - } - }() } opts := []corehttp.ServeOption{ corehttp.GatewayOption(*writable), } - if err := corehttp.ListenAndServe(node, *host, opts...); err != nil { - return err - } + return corehttp.ListenAndServe(node, *host, opts...) +} + +func runGarbageCollectorWorker(ctx context.Context, node *core.IpfsNode) error { + go func() { + for _ = range time.Tick(*garbageCollectInterval) { + if err := corerepo.GarbageCollect(node, ctx); err != nil { + log.Println("failed to run garbage collection", err) + } + } + }() + return nil +} + +func runFileServerWorker(ctx context.Context, node *core.IpfsNode) error { + fi, err := os.Stat(*assetsPath) + if err != nil { + return err + } + if !fi.IsDir() { + return errors.New("asset path must be a directory") + } + go func() { + for _ = range time.Tick(*refreshAssetsInterval) { + _, err := coreunix.AddR(node, *assetsPath) + if err != nil { + log.Println(err) + } + } + }() return nil }