package cluster import ( "context" "errors" "github.com/hdt3213/godis/redis/client" "github.com/jolestar/go-commons-pool/v2" ) type ConnectionFactory struct { Peer string } func (f *ConnectionFactory) MakeObject(ctx context.Context) (*pool.PooledObject, error) { c, err := client.MakeClient(f.Peer) if err != nil { return nil, err } c.Start() return pool.NewPooledObject(c), nil } func (f *ConnectionFactory) DestroyObject(ctx context.Context, object *pool.PooledObject) error { c, ok := object.Object.(*client.Client) if !ok { return errors.New("type mismatch") } c.Close() return nil } func (f *ConnectionFactory) ValidateObject(ctx context.Context, object *pool.PooledObject) bool { // do validate return true } func (f *ConnectionFactory) ActivateObject(ctx context.Context, object *pool.PooledObject) error { // do activate return nil } func (f *ConnectionFactory) PassivateObject(ctx context.Context, object *pool.PooledObject) error { // do passivate return nil }