Run goroutine to check each submission
This commit is contained in:
parent
42ed5c11ec
commit
a9f35d224b
|
@ -4,9 +4,11 @@ import (
|
||||||
"flag"
|
"flag"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"golang.org/x/exp/inotify"
|
"golang.org/x/exp/inotify"
|
||||||
"srs.epita.fr/fic-server/libfic"
|
"srs.epita.fr/fic-server/libfic"
|
||||||
|
@ -44,6 +46,8 @@ func main() {
|
||||||
|
|
||||||
SubmissionDir = path.Clean(SubmissionDir)
|
SubmissionDir = path.Clean(SubmissionDir)
|
||||||
|
|
||||||
|
rand.Seed(time.Now().UnixNano())
|
||||||
|
|
||||||
log.Println("Creating submission directory...")
|
log.Println("Creating submission directory...")
|
||||||
if _, err := os.Stat(SubmissionDir); os.IsNotExist(err) {
|
if _, err := os.Stat(SubmissionDir); os.IsNotExist(err) {
|
||||||
if err := os.MkdirAll(SubmissionDir, 0777); err != nil {
|
if err := os.MkdirAll(SubmissionDir, 0777); err != nil {
|
||||||
|
@ -83,9 +87,7 @@ func main() {
|
||||||
// Extract
|
// Extract
|
||||||
spath := strings.Split(strings.TrimPrefix(ev.Name, SubmissionDir), "/")
|
spath := strings.Split(strings.TrimPrefix(ev.Name, SubmissionDir), "/")
|
||||||
|
|
||||||
if err := treatSubmission(ev.Name, spath[1], spath[2]); err != nil {
|
go treatSubmission(ev.Name, spath[1], spath[2])
|
||||||
log.Println("An error occurs during treating:", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
case err := <-watcher.Error:
|
case err := <-watcher.Error:
|
||||||
log.Println("error:", err)
|
log.Println("error:", err)
|
||||||
|
|
|
@ -2,26 +2,32 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"encoding/base64"
|
||||||
|
"encoding/binary"
|
||||||
"log"
|
"log"
|
||||||
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"srs.epita.fr/fic-server/libfic"
|
"srs.epita.fr/fic-server/libfic"
|
||||||
)
|
)
|
||||||
|
|
||||||
func treatSubmission(pathname string, team_id string, exercice_id string) error {
|
func treatSubmission(pathname string, team_id string, exercice_id string) {
|
||||||
log.Println("Treating", pathname)
|
bid := make([]byte, 5)
|
||||||
|
binary.LittleEndian.PutUint32(bid, rand.Uint32())
|
||||||
|
id := "[" + base64.StdEncoding.EncodeToString(bid) + "]"
|
||||||
|
log.Println(id, "New submission receive", pathname)
|
||||||
|
|
||||||
if tid, err := strconv.Atoi(team_id); err != nil {
|
if tid, err := strconv.Atoi(team_id); err != nil {
|
||||||
return err
|
log.Println(id, "[ERR]", err)
|
||||||
} else if eid, err := strconv.Atoi(exercice_id); err != nil {
|
} else if eid, err := strconv.Atoi(exercice_id); err != nil {
|
||||||
return err
|
log.Println(id, "[ERR]", err)
|
||||||
} else if team, err := fic.GetTeam(tid); err != nil {
|
} else if team, err := fic.GetTeam(tid); err != nil {
|
||||||
return err
|
log.Println(id, "[ERR]", err)
|
||||||
} else if exercice, err := fic.GetExercice(eid); err != nil {
|
} else if exercice, err := fic.GetExercice(eid); err != nil {
|
||||||
return err
|
log.Println(id, "[ERR]", err)
|
||||||
} else if file, err := os.Open(pathname); err != nil {
|
} else if file, err := os.Open(pathname); err != nil {
|
||||||
return err
|
log.Println(id, "[ERR]", err)
|
||||||
} else {
|
} else {
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
|
@ -30,8 +36,8 @@ func treatSubmission(pathname string, team_id string, exercice_id string) error
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
cnt += scanner.Text()
|
cnt += scanner.Text()
|
||||||
}
|
}
|
||||||
log.Println(team, exercice, cnt)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
|
log.Println(id, team, exercice, cnt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user