123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package connection
- type ClientFactoryFunc func(super *ConSelector) Client
- type Client interface {
- CfgValidate(map[string]interface{}) error
- GetClient() (interface{}, error)
- CloseClient() error
- }
- type clientWrapper struct {
- cli Client
- conn interface{}
- refCnt uint32
- }
- func NewClientWrapper(client Client, selector *ConSelector) (*clientWrapper, error) {
- props, err := selector.ReadCfgFromYaml()
- if err != nil {
- return nil, err
- }
- err = client.CfgValidate(props)
- if err != nil {
- return nil, err
- }
- var con interface{}
- con, err = client.GetClient()
- if err != nil {
- return nil, err
- }
- cliWpr := &clientWrapper{
- cli: client,
- conn: con,
- refCnt: 1,
- }
- return cliWpr, nil
- }
- func (c *clientWrapper) addRef() {
- c.refCnt = c.refCnt + 1
- }
- func (c *clientWrapper) subRef() {
- c.refCnt = c.refCnt - 1
- }
- func (c *clientWrapper) IsRefEmpty() bool {
- return c.refCnt == 0
- }
- func (c *clientWrapper) clean() {
- _ = c.cli.CloseClient()
- }
- func (c *clientWrapper) getInstance() interface{} {
- return c.conn
- }
|