本文整理汇总了Golang中gopkg/in/gilmour-libs/gilmour-e-go/v5.Gilmour类的典型用法代码示例。如果您正苦于以下问题:Golang Gilmour类的具体用法?Golang Gilmour怎么用?Golang Gilmour使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Gilmour类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: stopWordsReply
func stopWordsReply(g *G.Gilmour, stopList *[]string) func(req *G.Request, resp *G.Message) {
return func(req *G.Request, resp *G.Message) {
line := fmt.Sprintf("Filtering out stop words")
g.Signal("example.log", G.NewMessage().SetData(line))
words := []string{}
if err := req.Data(&words); err != nil {
panic(words)
}
stopMap := map[string]bool{}
for _, w := range *stopList {
stopMap[w] = true
}
filtered := []string{}
for _, w := range words {
if _, ok := stopMap[w]; !ok {
filtered = append(filtered, w)
}
}
resp.SetData(filtered)
}
}
示例2: generator
func generator(first, second float64, tick <-chan time.Time, e *G.Gilmour) {
//Wait for a tick
<-tick
packet := map[string]float64{"first": first, "second": second}
data := G.NewMessage().SetData(packet)
req := e.NewRequest(fibTopic)
resp, err := req.Execute(data)
if err != nil {
fmt.Println("Error in Handler", err)
return
}
if resp.Code() != 200 {
fmt.Println("Error in Handler", resp.Code())
return
}
var next float64
msg := resp.Next()
if err := msg.GetData(&next); err != nil {
fmt.Println(err)
return
}
generator(second, next, tick, e)
}
示例3: bindListeners
//Bind all service endpoints to their topics.
func bindListeners(g *G.Gilmour) {
//Third argument is for Opts, which in this case is nil
g.ReplyTo("weather.fetch", fetchReply(g), nil)
g.ReplyTo("weather.group", groupReply(g), nil)
g.ReplyTo("weather.min", minReply(g), nil)
g.ReplyTo("weather.max", maxReply(g), nil)
}
示例4: saveReply
func saveReply(g *G.Gilmour) func(req *G.Request, resp *G.Message) {
return func(req *G.Request, resp *G.Message) {
line := fmt.Sprintf("Save")
g.Signal("example.log", G.NewMessage().SetData(line))
resp.SetData("Hello from Save")
}
}
示例5: findReply
func findReply(g *G.Gilmour) func(req *G.Request, resp *G.Message) {
return func(req *G.Request, resp *G.Message) {
line := fmt.Sprintf("Find")
g.Signal("example.log", G.NewMessage().SetData(line))
input := getInput(req)
resp.SetData(input)
}
}
示例6: wordsReply
func wordsReply(g *G.Gilmour) func(req *G.Request, resp *G.Message) {
return func(req *G.Request, resp *G.Message) {
line := fmt.Sprintf("WordCount")
g.Signal("example.log", G.NewMessage().SetData(line))
input := getInput(req)
wordRe := regexp.MustCompile("\\w+")
words := wordRe.FindAllString(input, -1)
resp.SetData(words)
}
}
示例7: echoRequest
func echoRequest(wg *sync.WaitGroup, engine *G.Gilmour, msg string) {
req := engine.NewRequest("echo")
resp, err := req.Execute(G.NewMessage().SetData(msg))
if err != nil {
fmt.Println("Echoclient: error", err.Error())
}
defer wg.Done()
var output string
if err := resp.Next().GetData(&output); err != nil {
fmt.Println("Echoclient: error", err.Error())
} else {
fmt.Println("Echoclient: received", output)
}
}
示例8: countReply
func countReply(g *G.Gilmour) func(req *G.Request, resp *G.Message) {
return func(req *G.Request, resp *G.Message) {
line := fmt.Sprintf("WordCount")
g.Signal("example.log", G.NewMessage().SetData(line))
input := []string{}
if err := req.Data(&input); err != nil {
panic(err)
}
word_counts := make(map[string]int)
for _, word := range input {
word_counts[word]++
}
resp.SetData(word_counts)
}
}
示例9: popularReply
func popularReply(g *G.Gilmour, wordLen int) func(req *G.Request, resp *G.Message) {
return func(req *G.Request, resp *G.Message) {
line := fmt.Sprintf("Popular %v", wordLen)
g.Signal("example.log", G.NewMessage().SetData(line))
input := map[string]int{}
if err := req.Data(&input); err != nil {
panic(err)
}
popular := map[int][]string{}
score := []int{}
for k, v := range input {
if len(k) != wordLen {
continue
}
popular[v] = append(popular[v], k)
}
for k := range popular {
score = append(score, k)
}
sort.Sort(sort.Reverse(sort.IntSlice(score)))
output := struct {
WordLength int
Score int
Words []string
}{WordLength: wordLen}
if len(score) > 0 {
output.Score = score[0]
output.Words = popular[score[0]]
}
resp.SetData(output)
}
}
示例10: fetchReply
//Fetch a remote file from the URL received in Request.
func fetchReply(g *G.Gilmour) func(req *G.Request, resp *G.Message) {
return func(req *G.Request, resp *G.Message) {
url := getInput(req)
line := fmt.Sprintf("Fetch %v", url)
g.Signal("example.log", G.NewMessage().SetData(line))
response, err := http.Get(url)
if err != nil {
panic(err)
}
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
panic(err)
}
//Send back the contents.
resp.SetData(string(contents))
}
}
示例11: glog
func glog(g *G.Gilmour, msg string) {
g.Signal("example.log", G.NewMessage().SetData(msg))
}