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 }