相关疑难解决方法(0)

Go插件依赖项如何工作?

Go 1.8支持Go插件。

我创建了两个插件,如下所示。

据我了解,该插件仅公开main包中的函数和变量。即plugin.Lookup()对于非main变量/函数将失败。

但是我想测试一个插件是否可以在内部从另一个插件调用方法,类似于C ++库如何调用另一个库。

所以我测试如下:

plugin1 github.com/vimal/testplugin

$ cat myplugin.go
package main

import "C"
import "fmt"
import help "github.com/vimal/testplugin1/plug"

func init() {
        fmt.Printf("main.init invoked\n")
}
// TestPlugin 
func TestPlugin() string {
        return help.Help()
}
Run Code Online (Sandbox Code Playgroud)

plugin2 github.com/vimal/testplugin1

$ cat myplugin.go
package main

import "C"

func HelperFunc() string {
        return "help"
}
$ cat plug/helper.go
package help

func Help() string {
        return "help234"
}
Run Code Online (Sandbox Code Playgroud)

这里的想法是,plugin1调用plugin2的内部非main功能。

主程序

主程序加载作为参数给定的许多插件,并TestPlugin()从最后一个插件调用。

测试1:

构建两个插件,加载两个插件,然后调用invoke TestPlugin() …

plugins dependencies go

5
推荐指数
1
解决办法
1029
查看次数

去1.8插件使用自定义界面

我想使用基于go插件的自定义界面,但我发现它不支持.

filter.Filter的定义

package filter

import (
    "net/http"

    "github.com/valyala/fasthttp"
)

// Context filter context
type Context interface {
    SetStartAt(startAt int64)
    SetEndAt(endAt int64)
    GetStartAt() int64
    GetEndAt() int64

    GetProxyServerAddr() string
    GetProxyOuterRequest() *fasthttp.Request
    GetProxyResponse() *fasthttp.Response
    NeedMerge() bool

    GetOriginRequestCtx() *fasthttp.RequestCtx

    GetMaxQPS() int

    ValidateProxyOuterRequest() bool

    InBlacklist(ip string) bool
    InWhitelist(ip string) bool

    IsCircuitOpen() bool
    IsCircuitHalf() bool

    GetOpenToCloseFailureRate() int
    GetHalfTrafficRate() int
    GetHalfToOpenSucceedRate() int
    GetOpenToCloseCollectSeconds() int

    ChangeCircuitStatusToClose()
    ChangeCircuitStatusToOpen()

    RecordMetricsForRequest()
    RecordMetricsForResponse()
    RecordMetricsForFailure()
    RecordMetricsForReject()

    GetRecentlyRequestSuccessedCount(sec int) int
    GetRecentlyRequestCount(sec int) int
    GetRecentlyRequestFailureCount(sec int) int
}

// Filter filter interface
type Filter interface …
Run Code Online (Sandbox Code Playgroud)

plugins go

2
推荐指数
1
解决办法
1715
查看次数

标签 统计

go ×2

plugins ×2

dependencies ×1