Browse Source

Move session cleaner to another file

Vova Tkach 6 years ago
parent
commit
df613443ff
2 changed files with 42 additions and 30 deletions
  1. 2 30
      main.go
  2. 40 0
      session.go

+ 2 - 30
main.go

@@ -4,10 +4,8 @@ import (
 	"errors"
 	"flag"
 	"fmt"
-	"io/ioutil"
 	"net/http"
 	"os"
-	"time"
 
 	"golang-fave/assets"
 	"golang-fave/consts"
@@ -49,30 +47,8 @@ func main() {
 	lg.SetWwwDir(ParamWwwDir)
 
 	// Session cleaner
-	sess_cleaner_chan := make(chan bool)
-	go func() {
-		for {
-			select {
-			case <-time.After(1 * time.Hour):
-				files, err := ioutil.ReadDir(ParamWwwDir)
-				if err == nil {
-					for _, file := range files {
-						tmpdir := ParamWwwDir + string(os.PathSeparator) + file.Name() + string(os.PathSeparator) + "tmp"
-						if utils.IsDirExists(tmpdir) {
-							session.Clean(tmpdir)
-						}
-					}
-				}
-			case <-sess_cleaner_chan:
-				sess_cleaner_chan <- true
-				return
-			}
-		}
-	}()
-	defer func() {
-		sess_cleaner_chan <- true
-		<-sess_cleaner_chan
-	}()
+	sess_cl_ch := session_clean_start(ParamWwwDir)
+	defer session_clean_stop(sess_cl_ch)
 
 	// Init mounted resources
 	res := resource.New()
@@ -149,8 +125,4 @@ func main() {
 		// Error 404
 		utils.SystemErrorPage404(w)
 	})
-
-	// TODO: call it in background time by time
-	// Delete expired session files
-	// session.Clean("./tmp")
 }

+ 40 - 0
session.go

@@ -0,0 +1,40 @@
+package main
+
+import (
+	"io/ioutil"
+	"os"
+	"time"
+
+	"golang-fave/utils"
+
+	"github.com/vladimirok5959/golang-server-sessions/session"
+)
+
+func session_clean_start(www_dir string) chan bool {
+	ch := make(chan bool)
+	go func() {
+		for {
+			select {
+			case <-time.After(1 * time.Hour):
+				files, err := ioutil.ReadDir(www_dir)
+				if err == nil {
+					for _, file := range files {
+						tmpdir := www_dir + string(os.PathSeparator) + file.Name() + string(os.PathSeparator) + "tmp"
+						if utils.IsDirExists(tmpdir) {
+							session.Clean(tmpdir)
+						}
+					}
+				}
+			case <-ch:
+				ch <- true
+				return
+			}
+		}
+	}()
+	return ch
+}
+
+func session_clean_stop(ch chan bool) {
+	ch <- true
+	<-ch
+}