Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "github.com/chzyer/readline"
- "log"
- //"os"
- "net/http"
- "strings"
- )
- func Shell() {
- prompt, err := readline.NewEx(&readline.Config{
- Prompt: "> ",
- HistoryFile: "/tmp/q.log",
- InterruptPrompt: "^C",
- EOFPrompt: "exit",
- HistorySearchFold: true,
- })
- defer func() {
- err := prompt.Close()
- if err != nil {
- log.Fatal(err)
- }
- }()
- if err != nil {
- log.Fatal(err)
- }
- log.SetOutput(prompt.Stderr())
- for {
- line, err := prompt.Readline()
- if err != nil {
- log.Fatal(err)
- }
- line = strings.TrimSpace(line)
- cmd := strings.Fields(line)
- if len(cmd) > 0 {
- switch cmd[0] {
- case "queue":
- select {
- case messages <- cmd[1]:
- fmt.Println("Added to queue", cmd[1])
- default:
- fmt.Println("nope")
- }
- default:
- fmt.Println(cmd)
- }
- }
- }
- }
- var messages = make(chan string, 32)
- func getMessage(w http.ResponseWriter, r *http.Request) {
- select {
- case m, ok := <-messages:
- if ok {
- fmt.Fprintf(w, m)
- } else {
- fmt.Println(ok)
- fmt.Fprintf(w, "Something went wrong")
- }
- default:
- fmt.Fprintf(w, "The queue is empty!")
- }
- }
- func main() {
- go Shell()
- http.HandleFunc("/get", getMessage)
- http.ListenAndServe(":8080", nil)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement