Ejemplo n.º 1
0
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)
}
Ejemplo n.º 2
0
// 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
}