From 0f6607bf12f502366d8b1be6f68926ee6e24d39a Mon Sep 17 00:00:00 2001 From: "ivan.rigo" <ivan.rigo@etu.hesge.ch> Date: Sun, 27 Nov 2022 12:46:23 +0100 Subject: [PATCH] Start findReq Func --- .../Important.txt => Storage2/Can.txt} | 0 web-service-gin/Storage2/Garbage.py | 0 web-service-gin/Storage3/Ham.txt | 0 web-service-gin/Storage3/Important.txt | 0 web-service-gin/Storage4/Can.txt | 0 web-service-gin/Storage4/Ham.txt | 0 web-service-gin/Storage4/Test.html | 0 web-service-gin/Storage5/Garbage.py | 0 web-service-gin/Storage5/Test.html | 0 web-service-gin/Storage6/Can.txt | 0 web-service-gin/Storage6/Important.txt | 0 web-service-gin/Storage7/Ham.txt | 0 web-service-gin/Storage7/Important.txt | 0 web-service-gin/main.go | 59 +++++++++++++------ 14 files changed, 41 insertions(+), 18 deletions(-) rename web-service-gin/{Storage1/Important.txt => Storage2/Can.txt} (100%) create mode 100644 web-service-gin/Storage2/Garbage.py create mode 100644 web-service-gin/Storage3/Ham.txt create mode 100644 web-service-gin/Storage3/Important.txt create mode 100644 web-service-gin/Storage4/Can.txt create mode 100644 web-service-gin/Storage4/Ham.txt create mode 100644 web-service-gin/Storage4/Test.html create mode 100644 web-service-gin/Storage5/Garbage.py create mode 100644 web-service-gin/Storage5/Test.html create mode 100644 web-service-gin/Storage6/Can.txt create mode 100644 web-service-gin/Storage6/Important.txt create mode 100644 web-service-gin/Storage7/Ham.txt create mode 100644 web-service-gin/Storage7/Important.txt diff --git a/web-service-gin/Storage1/Important.txt b/web-service-gin/Storage2/Can.txt similarity index 100% rename from web-service-gin/Storage1/Important.txt rename to web-service-gin/Storage2/Can.txt diff --git a/web-service-gin/Storage2/Garbage.py b/web-service-gin/Storage2/Garbage.py new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage3/Ham.txt b/web-service-gin/Storage3/Ham.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage3/Important.txt b/web-service-gin/Storage3/Important.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage4/Can.txt b/web-service-gin/Storage4/Can.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage4/Ham.txt b/web-service-gin/Storage4/Ham.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage4/Test.html b/web-service-gin/Storage4/Test.html new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage5/Garbage.py b/web-service-gin/Storage5/Garbage.py new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage5/Test.html b/web-service-gin/Storage5/Test.html new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage6/Can.txt b/web-service-gin/Storage6/Can.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage6/Important.txt b/web-service-gin/Storage6/Important.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage7/Ham.txt b/web-service-gin/Storage7/Ham.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/Storage7/Important.txt b/web-service-gin/Storage7/Important.txt new file mode 100644 index 0000000..e69de29 diff --git a/web-service-gin/main.go b/web-service-gin/main.go index c5b6f34..2c16187 100644 --- a/web-service-gin/main.go +++ b/web-service-gin/main.go @@ -18,6 +18,8 @@ var port string var parent int var msgId = 0 var err error +var foundRsc = false +var basePort = 8080 // album represents data about a record album. type album struct { @@ -38,16 +40,14 @@ var albums = []album{ func initReq(c *gin.Context) { msgId = rand.Intn(100) - parent, err = strconv.Atoi(idServ) + parent = -1 printErr(err) for i := 0; i < len(albums); i++ { if albums[i].ID == idServ { for j := 0; j < len(albums[i].Neighb); j++ { - if parent != albums[i].Neighb[j] { - resp, err := http.Get("http://localhost:808" + strconv.Itoa(albums[i].Neighb[j]) + "/req/" + idServ + "/" + c.Param("tlv") + "/" + strconv.Itoa(msgId)) - printErr(err) - fmt.Println(resp.Status) - } + resp, err := http.Get("http://localhost:" + strconv.Itoa(basePort+albums[i].Neighb[j]) + "/req/" + idServ + "/" + c.Param("tlv") + "/" + strconv.Itoa(msgId) + "/" + c.Param("ressource")) + printErr(err) + fmt.Println(resp.Status) } } } @@ -59,32 +59,55 @@ func receiveReq(c *gin.Context) { transmitterId, err := strconv.Atoi(c.Param("parent")) printErr(err) tlv, err := strconv.Atoi(c.Param("tlv")) + printErr(err) + if msgId != idMsgInt { msgId = idMsgInt parent = transmitterId - fmt.Println("My parent is " + strconv.Itoa(transmitterId) + " and this is a message from the broadcast called " + strconv.Itoa(idMsgInt)) - } else { - fmt.Println("I already have a parent,dont care") + foundRsc = false + } + + for _, x := range arrFile { + if x == c.Param("ressource") { + if !foundRsc { + go sendFound(c.Param("ressource")) + } + foundRsc = true + break + } } + tlv = tlv - 1 if tlv != 0 { for i := 0; i < len(albums); i++ { + //Open Neighb reg of this node if albums[i].ID == idServ { for j := 0; j < len(albums[i].Neighb); j++ { - if transmitterId != albums[i].Neighb[j] { - resp, err := http.Get("http://localhost:808" + strconv.Itoa(albums[i].Neighb[j]) + "/req/" + idServ + "/" + strconv.Itoa(tlv) + "/" + strconv.Itoa(msgId)) + if transmitterId != albums[i].Neighb[j] && parent != albums[i].Neighb[j] { + resp, err := http.Get("http://localhost:" + strconv.Itoa(basePort+albums[i].Neighb[j]) + "/req/" + idServ + "/" + strconv.Itoa(tlv) + "/" + strconv.Itoa(msgId) + "/" + c.Param("ressource")) printErr(err) fmt.Println(resp.Status) } } } } - } else { - fmt.Println("Witnessed end of broadcast") } c.Status(http.StatusOK) } +//Called by child when ressource is find +func foundReq(c *gin.Context) { + if parent == -1 { + fmt.Println("Ressource found ") + } +} + +func sendFound(ressource string) { + resp, err := http.Get("http://localhost:" + strconv.Itoa(basePort+parent) + "/foundReq/" + idServ + "/" + ressource) + printErr(err) + fmt.Println(resp.Status) +} + func printErr(err error) { if err != nil { log.Fatal(err) @@ -96,18 +119,18 @@ func main() { idServ = os.Args[1] nbIdServ, err := strconv.Atoi(idServ) - files, err := ioutil.ReadDir("Storage1/") + files, err := ioutil.ReadDir("Storage" + idServ + "/") printErr(err) for _, file := range files { arrFile = append(arrFile, file.Name()) } - port = strconv.Itoa(8080 + nbIdServ) + port = strconv.Itoa(basePort + nbIdServ) router := gin.Default() - router.GET("/initReq/:tlv", initReq) - router.GET("/req/:parent/:tlv/:msgId", receiveReq) - fmt.Println(port) + router.GET("/initReq/:tlv/:ressource", initReq) + router.GET("/req/:parent/:tlv/:msgId/:ressource", receiveReq) + router.GET("/foundReq/:finder/:ressource", foundReq) /* resp, err := http.Get("http://localhost:8080/req") -- GitLab