mirror of
https://github.com/HDT3213/godis.git
synced 2025-10-05 16:57:06 +08:00
46 lines
1003 B
Go
46 lines
1003 B
Go
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
|
|
}
|