func initRethinkConn() (*r.Session, error) { addresses := strings.Split(*rethinkUrl, ",") connectOpts := r.ConnectOpts{ Addresses: addresses, Timeout: time.Duration(10 * time.Second), MaxIdle: 10, MaxOpen: 10, DiscoverHosts: false, } if *rethinkPassword != "" { connectOpts.AuthKey = *rethinkPassword } return r.Connect(connectOpts) }
// Open initializes rethinkdb session func (a *RethinkDbAdapter) Open(jsonconfig string) error { if a.conn != nil { return errors.New("adapter rethinkdb is already connected") } var err error var config configType if err = json.Unmarshal([]byte(jsonconfig), &config); err != nil { return errors.New("adapter rethinkdb failed to parse config: " + err.Error()) } var opts rdb.ConnectOpts if config.Addresses == nil { opts.Address = defaultHost } else if host, ok := config.Addresses.(string); ok { opts.Address = host } else if hosts, ok := config.Addresses.([]string); ok { opts.Addresses = hosts } else { return errors.New("adapter rethinkdb failed to parse config.Addresses") } if config.Database == "" { a.dbName = defaultDatabase } else { a.dbName = config.Database } opts.Database = a.dbName opts.AuthKey = config.AuthKey opts.Timeout = time.Duration(config.Timeout) * time.Second opts.WriteTimeout = time.Duration(config.WriteTimeout) * time.Second opts.ReadTimeout = time.Duration(config.ReadTimeout) * time.Second opts.MaxIdle = config.MaxIdle opts.MaxOpen = config.MaxOpen opts.DiscoverHosts = config.DiscoverHosts opts.NodeRefreshInterval = time.Duration(config.NodeRefreshInterval) * time.Second a.conn, err = rdb.Connect(opts) return err }