// 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 }