diff --git a/README.md b/README.md index fea4b9086c22f6d317157bec1d8736977c901498..1ace57d8375bc5b2730f223322a0f1b7b43f4896 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,29 @@ Représente la ressource cherché ##### Retour Renvoie OK si tout se passe bien. La requête n'est traité qu'une fois et tout appel successive avec le même msgID renvoie OK sans exécuter le reste de la requête. Vérifie lors de la première requête s'il possède la ressource et l'envoie à son transmitter. Broadcast ensuite la requête avec un TTL décrémenté à ses voisins ormis transmitter +#### Affiché le résultat de la recherche (GET) +http://localhost:NodePort/showRes +A utilisé après avoir utilisé la route précédente + +##### Retour +Affiche dans le terminal les noeuds contenant la ressource recherché. Un message différent est insèrer si le noeud initial possède aussi la ressource + +### Côté noeud +Ces fonctions sont utilisé entre les noeuds et ne doivent pas être appelé par l'user +#### Envoyé la recherche au voisins (GET) +http://localhost:NodePort/req/transmitter/ttl/msgid/ressource + +##### transmiter +Correspond à l'id du noeud ayant envoyé la requête +##### ttl +Correspond au Time To Live, il est décremente avant de l'envoyé aux voisins autre que transmitter +##### msgId +Correspond à l'id de la recherche. Elle change à chaque fois que la route initReq est appelé +##### ressource +Représente la ressource cherché +##### Retour +Renvoie OK si tout se passe bien. La requête n'est traité qu'une fois et tout appel successive avec le même msgID renvoie OK sans exécuter le reste de la requête. Vérifie lors de la première requête s'il possède la ressource et l'envoie à son transmitter. Broadcast ensuite la requête avec un TTL décrémenté à ses voisins ormis transmitter + #### Découverte de la ressource (GET) http://localhost:NodePort/foundReq/:finder/:ressource diff --git a/web-service-gin/Gnutella.go b/web-service-gin/Gnutella.go index 45965cf85c9a2bffe9d3b2e1f53baee2399795ad..6fcc032f476bc84e8103fe92f6c0acf8a7c74fa8 100644 --- a/web-service-gin/Gnutella.go +++ b/web-service-gin/Gnutella.go @@ -31,6 +31,7 @@ var transmitter int var msgId = 0 var err error var assignTransM sync.Mutex +var endResult string func getRequest(urlTxt string) { resp, err := http.Get(urlTxt) @@ -38,13 +39,19 @@ func getRequest(urlTxt string) { fmt.Println(resp.Status) } +func showReq(c *gin.Context) { + fmt.Println(endResult) + c.IndentedJSON(http.StatusOK, endResult) +} + func initReq(c *gin.Context) { msgId = rand.Intn(100) + data.ID transmitter = -1 - fmt.Println("\n Start of new research ") + endResult = "" for _, x := range storage { if x == c.Param("ressource") { - fmt.Println("\n Ressource exist in Client ") + fmt.Println("\nRessource exist in Client") + endResult = "Found ressource in node client " break } } @@ -96,7 +103,14 @@ func receiveReq(c *gin.Context) { //Called by child when ressource is find func foundReq(c *gin.Context) { if transmitter == -1 { - fmt.Println("\n Instance of " + c.Param("ressource") + " found on port " + c.Param("finder")) + if endResult == "" { + endResult = "Instance of " + c.Param("ressource") + " found on port " + c.Param("finder") + " " + fmt.Println(endResult) + } else { + endResult += "Instance of " + c.Param("ressource") + " found on port " + c.Param("finder") + " " + fmt.Println(endResult) + } + fmt.Println(endResult) } else { getRequest("http://" + data.Neighbors[transmitter].Address + "/foundReq/" + c.Param("finder") + "/" + c.Param("ressource")) } @@ -141,6 +155,7 @@ func main() { router.GET("/initReq/:ttl/:ressource", initReq) router.GET("/req/:transmitter/:ttl/:msgId/:ressource", receiveReq) router.GET("/foundReq/:finder/:ressource", foundReq) + router.GET("/showRes", showReq) router.Run(data.Address)