Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "github.com/tarantool/go-tarantool"
- "gopkg.in/vmihailenco/msgpack.v2"
- "log"
- "net"
- "net/http"
- _ "net/http/pprof"
- "os"
- "time"
- )
- var conn *tarantool.Connection
- func main() {
- var err error
- conn, err = tarantool.Connect("127.0.0.1:6300", tarantool.Opts{
- RateLimit: 1000,
- RLimitAction: tarantool.RLimitWait,
- User: "user",
- Pass: "secret",
- Reconnect: time.Second,
- })
- if err != nil {
- log.Printf("can't connect to tarantool, %+v", err)
- os.Exit(1)
- }
- go func() {
- var resp response
- //var err error
- for {
- _ = conn.CallTyped("app.demotest", []interface{}{1}, &resp)
- }
- }()
- log.Printf("listen on 2000")
- pprofListener, err := net.Listen("tcp4", "127.0.0.1:2000")
- if err != nil {
- log.Printf("error create pprof listener, %v", err)
- return
- }
- if err := http.Serve(pprofListener, nil); err != nil {
- log.Printf("error start pprof server, %v", err)
- }
- }
- type response struct {
- code int
- }
- func (r *response) DecodeMsgpack(d *msgpack.Decoder) error {
- var err error
- var l int
- if l, err = d.DecodeArrayLen(); err != nil {
- return err
- }
- if l != 1 {
- return fmt.Errorf("wrong response len 1")
- }
- if l, err = d.DecodeArrayLen(); err != nil {
- return err
- }
- if l != 1 {
- return fmt.Errorf("wrong response len 2")
- }
- if r.code, err = d.DecodeInt(); err != nil {
- return err
- }
- return nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement