github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/trace/discovery_gtrace.go (about)

     1  // Code generated by gtrace. DO NOT EDIT.
     2  
     3  package trace
     4  
     5  import (
     6  	"context"
     7  )
     8  
     9  // discoveryComposeOptions is a holder of options
    10  type discoveryComposeOptions struct {
    11  	panicCallback func(e interface{})
    12  }
    13  
    14  // DiscoveryOption specified Discovery compose option
    15  // Internals: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#internals
    16  type DiscoveryComposeOption func(o *discoveryComposeOptions)
    17  
    18  // WithDiscoveryPanicCallback specified behavior on panic
    19  // Internals: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#internals
    20  func WithDiscoveryPanicCallback(cb func(e interface{})) DiscoveryComposeOption {
    21  	return func(o *discoveryComposeOptions) {
    22  		o.panicCallback = cb
    23  	}
    24  }
    25  
    26  // Compose returns a new Discovery which has functional fields composed both from t and x.
    27  // Internals: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#internals
    28  func (t *Discovery) Compose(x *Discovery, opts ...DiscoveryComposeOption) *Discovery {
    29  	if t == nil {
    30  		return x
    31  	}
    32  	var ret Discovery
    33  	options := discoveryComposeOptions{}
    34  	for _, opt := range opts {
    35  		if opt != nil {
    36  			opt(&options)
    37  		}
    38  	}
    39  	{
    40  		h1 := t.OnDiscover
    41  		h2 := x.OnDiscover
    42  		ret.OnDiscover = func(d DiscoveryDiscoverStartInfo) func(DiscoveryDiscoverDoneInfo) {
    43  			if options.panicCallback != nil {
    44  				defer func() {
    45  					if e := recover(); e != nil {
    46  						options.panicCallback(e)
    47  					}
    48  				}()
    49  			}
    50  			var r, r1 func(DiscoveryDiscoverDoneInfo)
    51  			if h1 != nil {
    52  				r = h1(d)
    53  			}
    54  			if h2 != nil {
    55  				r1 = h2(d)
    56  			}
    57  			return func(d DiscoveryDiscoverDoneInfo) {
    58  				if options.panicCallback != nil {
    59  					defer func() {
    60  						if e := recover(); e != nil {
    61  							options.panicCallback(e)
    62  						}
    63  					}()
    64  				}
    65  				if r != nil {
    66  					r(d)
    67  				}
    68  				if r1 != nil {
    69  					r1(d)
    70  				}
    71  			}
    72  		}
    73  	}
    74  	{
    75  		h1 := t.OnWhoAmI
    76  		h2 := x.OnWhoAmI
    77  		ret.OnWhoAmI = func(d DiscoveryWhoAmIStartInfo) func(DiscoveryWhoAmIDoneInfo) {
    78  			if options.panicCallback != nil {
    79  				defer func() {
    80  					if e := recover(); e != nil {
    81  						options.panicCallback(e)
    82  					}
    83  				}()
    84  			}
    85  			var r, r1 func(DiscoveryWhoAmIDoneInfo)
    86  			if h1 != nil {
    87  				r = h1(d)
    88  			}
    89  			if h2 != nil {
    90  				r1 = h2(d)
    91  			}
    92  			return func(d DiscoveryWhoAmIDoneInfo) {
    93  				if options.panicCallback != nil {
    94  					defer func() {
    95  						if e := recover(); e != nil {
    96  							options.panicCallback(e)
    97  						}
    98  					}()
    99  				}
   100  				if r != nil {
   101  					r(d)
   102  				}
   103  				if r1 != nil {
   104  					r1(d)
   105  				}
   106  			}
   107  		}
   108  	}
   109  	return &ret
   110  }
   111  func (t *Discovery) onDiscover(d DiscoveryDiscoverStartInfo) func(DiscoveryDiscoverDoneInfo) {
   112  	fn := t.OnDiscover
   113  	if fn == nil {
   114  		return func(DiscoveryDiscoverDoneInfo) {
   115  			return
   116  		}
   117  	}
   118  	res := fn(d)
   119  	if res == nil {
   120  		return func(DiscoveryDiscoverDoneInfo) {
   121  			return
   122  		}
   123  	}
   124  	return res
   125  }
   126  func (t *Discovery) onWhoAmI(d DiscoveryWhoAmIStartInfo) func(DiscoveryWhoAmIDoneInfo) {
   127  	fn := t.OnWhoAmI
   128  	if fn == nil {
   129  		return func(DiscoveryWhoAmIDoneInfo) {
   130  			return
   131  		}
   132  	}
   133  	res := fn(d)
   134  	if res == nil {
   135  		return func(DiscoveryWhoAmIDoneInfo) {
   136  			return
   137  		}
   138  	}
   139  	return res
   140  }
   141  // Internals: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#internals
   142  func DiscoveryOnDiscover(t *Discovery, c *context.Context, call call, address string, database string) func(location string, endpoints []EndpointInfo, _ error) {
   143  	var p DiscoveryDiscoverStartInfo
   144  	p.Context = c
   145  	p.Call = call
   146  	p.Address = address
   147  	p.Database = database
   148  	res := t.onDiscover(p)
   149  	return func(location string, endpoints []EndpointInfo, e error) {
   150  		var p DiscoveryDiscoverDoneInfo
   151  		p.Location = location
   152  		p.Endpoints = endpoints
   153  		p.Error = e
   154  		res(p)
   155  	}
   156  }
   157  // Internals: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#internals
   158  func DiscoveryOnWhoAmI(t *Discovery, c *context.Context, call call) func(user string, groups []string, _ error) {
   159  	var p DiscoveryWhoAmIStartInfo
   160  	p.Context = c
   161  	p.Call = call
   162  	res := t.onWhoAmI(p)
   163  	return func(user string, groups []string, e error) {
   164  		var p DiscoveryWhoAmIDoneInfo
   165  		p.User = user
   166  		p.Groups = groups
   167  		p.Error = e
   168  		res(p)
   169  	}
   170  }