@cryptotaxi247 / kubo / commits / 46722af95

Add tracer plugin support

define interface for creating tracers for use with opentracing-api License: MIT Signed-off-by: ForrestWeston <forrest@protocol.ai>

ForrestWeston committed Dec 19, 2017 at 10:47 UTC 46722af9583a9ede8ce9c4b5c83612b9f72c08f8
3 files changed +41 -10
package.json
+6
@@ -581,6 +581,12 @@
581 "hash": "QmQine7gvHncNevKtG9QXxf3nXcwSj6aDDmMm52mHofEEp",
582 "name": "tar-utils",
583 "version": "0.0.3"
584 + },
585 + {
586 + "author": "frist",
587 + "hash": "QmWLWmRVSiagqP15jczsGME1qpob6HDbtbHAY2he9W5iUo",
588 + "name": "opentracing-go",
589 + "version": "0.0.3"
590 }
591 ],
592 "gxVersion": "0.10.0",
plugin/loader/initializer.go
+24 -10
@@ -3,6 +3,7 @@ package loader
3 import (
4 "github.com/ipfs/go-ipfs/core/coredag"
5 "github.com/ipfs/go-ipfs/plugin"
6 + "gx/ipfs/QmWLWmRVSiagqP15jczsGME1qpob6HDbtbHAY2he9W5iUo/opentracing-go"
7
8 ipld "gx/ipfs/Qme5bWv7wtjUNGsK2BNGVUFPKiuxWrsqrtvYwCLRw8YFES/go-ipld-format"
9 )
@@ -20,24 +21,37 @@ func initialize(plugins []plugin.Plugin) error {
21
22 func run(plugins []plugin.Plugin) error {
23 for _, pl := range plugins {
23 - err := runIPLDPlugin(pl)
24 - if err != nil {
25 - return err
24 + switch pl := pl.(type) {
25 + case plugin.PluginIPLD:
26 + err := runIPLDPlugin(pl)
27 + if err != nil {
28 + return err
29 + }
30 + case plugin.PluginTracer:
31 + err := runTracerPlugin(pl)
32 + if err != nil {
33 + return err
34 + }
35 + default:
36 + panic(pl)
37 }
38 }
39 return nil
40 }
41
31 -func runIPLDPlugin(pl plugin.Plugin) error {
32 - ipldpl, ok := pl.(plugin.PluginIPLD)
33 - if !ok {
34 - return nil
42 +func runIPLDPlugin(pl plugin.PluginIPLD) error {
43 + err := pl.RegisterBlockDecoders(ipld.DefaultBlockDecoder)
44 + if err != nil {
45 + return err
46 }
47 + return pl.RegisterInputEncParsers(coredag.DefaultInputEncParsers)
48 +}
49
37 - err := ipldpl.RegisterBlockDecoders(ipld.DefaultBlockDecoder)
50 +func runTracerPlugin(pl plugin.PluginTracer) error {
51 + tracer, err := pl.InitTracer()
52 if err != nil {
53 return err
54 }
41 -
42 - return ipldpl.RegisterInputEncParsers(coredag.DefaultInputEncParsers)
55 + opentracing.SetGlobalTracer(tracer)
56 + return nil
57 }
plugin/tracer.go new
+11
@@ -0,0 +1,11 @@
1 +package plugin
2 +
3 +import (
4 + "gx/ipfs/QmWLWmRVSiagqP15jczsGME1qpob6HDbtbHAY2he9W5iUo/opentracing-go"
5 +)
6 +
7 +// PluginTracer is an interface that can be implemented to add a tracer
8 +type PluginTracer interface {
9 + Plugin
10 + InitTracer() (opentracing.Tracer, error)
11 +}