3 Star 6 Fork 7

Gitee 极速下载/Hyperledger fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/hyperledger/fabric
克隆/下载
events.pb.go 17.36 KB
一键复制 编辑 原始数据 按行查看 历史
YACOVM 提交于 2016-08-22 13:57 . Upgrade go protobuf from 3-beta to 3
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
// Code generated by protoc-gen-go.
// source: events.proto
// DO NOT EDIT!
package protos
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
type EventType int32
const (
EventType_REGISTER EventType = 0
EventType_BLOCK EventType = 1
EventType_CHAINCODE EventType = 2
EventType_REJECTION EventType = 3
)
var EventType_name = map[int32]string{
0: "REGISTER",
1: "BLOCK",
2: "CHAINCODE",
3: "REJECTION",
}
var EventType_value = map[string]int32{
"REGISTER": 0,
"BLOCK": 1,
"CHAINCODE": 2,
"REJECTION": 3,
}
func (x EventType) String() string {
return proto.EnumName(EventType_name, int32(x))
}
func (EventType) EnumDescriptor() ([]byte, []int) { return fileDescriptor4, []int{0} }
// ChaincodeReg is used for registering chaincode Interests
// when EventType is CHAINCODE
type ChaincodeReg struct {
ChaincodeID string `protobuf:"bytes,1,opt,name=chaincodeID" json:"chaincodeID,omitempty"`
EventName string `protobuf:"bytes,2,opt,name=eventName" json:"eventName,omitempty"`
}
func (m *ChaincodeReg) Reset() { *m = ChaincodeReg{} }
func (m *ChaincodeReg) String() string { return proto.CompactTextString(m) }
func (*ChaincodeReg) ProtoMessage() {}
func (*ChaincodeReg) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{0} }
type Interest struct {
EventType EventType `protobuf:"varint,1,opt,name=eventType,enum=protos.EventType" json:"eventType,omitempty"`
// Ideally we should just have the following oneof for different
// Reg types and get rid of EventType. But this is an API change
// Additional Reg types may add messages specific to their type
// to the oneof.
//
// Types that are valid to be assigned to RegInfo:
// *Interest_ChaincodeRegInfo
RegInfo isInterest_RegInfo `protobuf_oneof:"RegInfo"`
}
func (m *Interest) Reset() { *m = Interest{} }
func (m *Interest) String() string { return proto.CompactTextString(m) }
func (*Interest) ProtoMessage() {}
func (*Interest) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{1} }
type isInterest_RegInfo interface {
isInterest_RegInfo()
}
type Interest_ChaincodeRegInfo struct {
ChaincodeRegInfo *ChaincodeReg `protobuf:"bytes,2,opt,name=chaincodeRegInfo,oneof"`
}
func (*Interest_ChaincodeRegInfo) isInterest_RegInfo() {}
func (m *Interest) GetRegInfo() isInterest_RegInfo {
if m != nil {
return m.RegInfo
}
return nil
}
func (m *Interest) GetChaincodeRegInfo() *ChaincodeReg {
if x, ok := m.GetRegInfo().(*Interest_ChaincodeRegInfo); ok {
return x.ChaincodeRegInfo
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*Interest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _Interest_OneofMarshaler, _Interest_OneofUnmarshaler, _Interest_OneofSizer, []interface{}{
(*Interest_ChaincodeRegInfo)(nil),
}
}
func _Interest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*Interest)
// RegInfo
switch x := m.RegInfo.(type) {
case *Interest_ChaincodeRegInfo:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ChaincodeRegInfo); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("Interest.RegInfo has unexpected type %T", x)
}
return nil
}
func _Interest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*Interest)
switch tag {
case 2: // RegInfo.chaincodeRegInfo
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(ChaincodeReg)
err := b.DecodeMessage(msg)
m.RegInfo = &Interest_ChaincodeRegInfo{msg}
return true, err
default:
return false, nil
}
}
func _Interest_OneofSizer(msg proto.Message) (n int) {
m := msg.(*Interest)
// RegInfo
switch x := m.RegInfo.(type) {
case *Interest_ChaincodeRegInfo:
s := proto.Size(x.ChaincodeRegInfo)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// ---------- consumer events ---------
// Register is sent by consumers for registering events
// string type - "register"
type Register struct {
Events []*Interest `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"`
}
func (m *Register) Reset() { *m = Register{} }
func (m *Register) String() string { return proto.CompactTextString(m) }
func (*Register) ProtoMessage() {}
func (*Register) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{2} }
func (m *Register) GetEvents() []*Interest {
if m != nil {
return m.Events
}
return nil
}
// Rejection is sent by consumers for erroneous transaction rejection events
// string type - "rejection"
type Rejection struct {
Tx *Transaction `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"`
ErrorMsg string `protobuf:"bytes,2,opt,name=errorMsg" json:"errorMsg,omitempty"`
}
func (m *Rejection) Reset() { *m = Rejection{} }
func (m *Rejection) String() string { return proto.CompactTextString(m) }
func (*Rejection) ProtoMessage() {}
func (*Rejection) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{3} }
func (m *Rejection) GetTx() *Transaction {
if m != nil {
return m.Tx
}
return nil
}
// ---------- producer events ---------
type Unregister struct {
Events []*Interest `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"`
}
func (m *Unregister) Reset() { *m = Unregister{} }
func (m *Unregister) String() string { return proto.CompactTextString(m) }
func (*Unregister) ProtoMessage() {}
func (*Unregister) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{4} }
func (m *Unregister) GetEvents() []*Interest {
if m != nil {
return m.Events
}
return nil
}
// Event is used by
// - consumers (adapters) to send Register
// - producer to advertise supported types and events
type Event struct {
// Types that are valid to be assigned to Event:
// *Event_Register
// *Event_Block
// *Event_ChaincodeEvent
// *Event_Rejection
// *Event_Unregister
Event isEvent_Event `protobuf_oneof:"Event"`
}
func (m *Event) Reset() { *m = Event{} }
func (m *Event) String() string { return proto.CompactTextString(m) }
func (*Event) ProtoMessage() {}
func (*Event) Descriptor() ([]byte, []int) { return fileDescriptor4, []int{5} }
type isEvent_Event interface {
isEvent_Event()
}
type Event_Register struct {
Register *Register `protobuf:"bytes,1,opt,name=register,oneof"`
}
type Event_Block struct {
Block *Block `protobuf:"bytes,2,opt,name=block,oneof"`
}
type Event_ChaincodeEvent struct {
ChaincodeEvent *ChaincodeEvent `protobuf:"bytes,3,opt,name=chaincodeEvent,oneof"`
}
type Event_Rejection struct {
Rejection *Rejection `protobuf:"bytes,4,opt,name=rejection,oneof"`
}
type Event_Unregister struct {
Unregister *Unregister `protobuf:"bytes,5,opt,name=unregister,oneof"`
}
func (*Event_Register) isEvent_Event() {}
func (*Event_Block) isEvent_Event() {}
func (*Event_ChaincodeEvent) isEvent_Event() {}
func (*Event_Rejection) isEvent_Event() {}
func (*Event_Unregister) isEvent_Event() {}
func (m *Event) GetEvent() isEvent_Event {
if m != nil {
return m.Event
}
return nil
}
func (m *Event) GetRegister() *Register {
if x, ok := m.GetEvent().(*Event_Register); ok {
return x.Register
}
return nil
}
func (m *Event) GetBlock() *Block {
if x, ok := m.GetEvent().(*Event_Block); ok {
return x.Block
}
return nil
}
func (m *Event) GetChaincodeEvent() *ChaincodeEvent {
if x, ok := m.GetEvent().(*Event_ChaincodeEvent); ok {
return x.ChaincodeEvent
}
return nil
}
func (m *Event) GetRejection() *Rejection {
if x, ok := m.GetEvent().(*Event_Rejection); ok {
return x.Rejection
}
return nil
}
func (m *Event) GetUnregister() *Unregister {
if x, ok := m.GetEvent().(*Event_Unregister); ok {
return x.Unregister
}
return nil
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*Event) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _Event_OneofMarshaler, _Event_OneofUnmarshaler, _Event_OneofSizer, []interface{}{
(*Event_Register)(nil),
(*Event_Block)(nil),
(*Event_ChaincodeEvent)(nil),
(*Event_Rejection)(nil),
(*Event_Unregister)(nil),
}
}
func _Event_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*Event)
// Event
switch x := m.Event.(type) {
case *Event_Register:
b.EncodeVarint(1<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Register); err != nil {
return err
}
case *Event_Block:
b.EncodeVarint(2<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Block); err != nil {
return err
}
case *Event_ChaincodeEvent:
b.EncodeVarint(3<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.ChaincodeEvent); err != nil {
return err
}
case *Event_Rejection:
b.EncodeVarint(4<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Rejection); err != nil {
return err
}
case *Event_Unregister:
b.EncodeVarint(5<<3 | proto.WireBytes)
if err := b.EncodeMessage(x.Unregister); err != nil {
return err
}
case nil:
default:
return fmt.Errorf("Event.Event has unexpected type %T", x)
}
return nil
}
func _Event_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*Event)
switch tag {
case 1: // Event.register
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Register)
err := b.DecodeMessage(msg)
m.Event = &Event_Register{msg}
return true, err
case 2: // Event.block
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Block)
err := b.DecodeMessage(msg)
m.Event = &Event_Block{msg}
return true, err
case 3: // Event.chaincodeEvent
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(ChaincodeEvent)
err := b.DecodeMessage(msg)
m.Event = &Event_ChaincodeEvent{msg}
return true, err
case 4: // Event.rejection
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Rejection)
err := b.DecodeMessage(msg)
m.Event = &Event_Rejection{msg}
return true, err
case 5: // Event.unregister
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
msg := new(Unregister)
err := b.DecodeMessage(msg)
m.Event = &Event_Unregister{msg}
return true, err
default:
return false, nil
}
}
func _Event_OneofSizer(msg proto.Message) (n int) {
m := msg.(*Event)
// Event
switch x := m.Event.(type) {
case *Event_Register:
s := proto.Size(x.Register)
n += proto.SizeVarint(1<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *Event_Block:
s := proto.Size(x.Block)
n += proto.SizeVarint(2<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *Event_ChaincodeEvent:
s := proto.Size(x.ChaincodeEvent)
n += proto.SizeVarint(3<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *Event_Rejection:
s := proto.Size(x.Rejection)
n += proto.SizeVarint(4<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case *Event_Unregister:
s := proto.Size(x.Unregister)
n += proto.SizeVarint(5<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(s))
n += s
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
func init() {
proto.RegisterType((*ChaincodeReg)(nil), "protos.ChaincodeReg")
proto.RegisterType((*Interest)(nil), "protos.Interest")
proto.RegisterType((*Register)(nil), "protos.Register")
proto.RegisterType((*Rejection)(nil), "protos.Rejection")
proto.RegisterType((*Unregister)(nil), "protos.Unregister")
proto.RegisterType((*Event)(nil), "protos.Event")
proto.RegisterEnum("protos.EventType", EventType_name, EventType_value)
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion3
// Client API for Events service
type EventsClient interface {
// event chatting using Event
Chat(ctx context.Context, opts ...grpc.CallOption) (Events_ChatClient, error)
}
type eventsClient struct {
cc *grpc.ClientConn
}
func NewEventsClient(cc *grpc.ClientConn) EventsClient {
return &eventsClient{cc}
}
func (c *eventsClient) Chat(ctx context.Context, opts ...grpc.CallOption) (Events_ChatClient, error) {
stream, err := grpc.NewClientStream(ctx, &_Events_serviceDesc.Streams[0], c.cc, "/protos.Events/Chat", opts...)
if err != nil {
return nil, err
}
x := &eventsChatClient{stream}
return x, nil
}
type Events_ChatClient interface {
Send(*Event) error
Recv() (*Event, error)
grpc.ClientStream
}
type eventsChatClient struct {
grpc.ClientStream
}
func (x *eventsChatClient) Send(m *Event) error {
return x.ClientStream.SendMsg(m)
}
func (x *eventsChatClient) Recv() (*Event, error) {
m := new(Event)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
// Server API for Events service
type EventsServer interface {
// event chatting using Event
Chat(Events_ChatServer) error
}
func RegisterEventsServer(s *grpc.Server, srv EventsServer) {
s.RegisterService(&_Events_serviceDesc, srv)
}
func _Events_Chat_Handler(srv interface{}, stream grpc.ServerStream) error {
return srv.(EventsServer).Chat(&eventsChatServer{stream})
}
type Events_ChatServer interface {
Send(*Event) error
Recv() (*Event, error)
grpc.ServerStream
}
type eventsChatServer struct {
grpc.ServerStream
}
func (x *eventsChatServer) Send(m *Event) error {
return x.ServerStream.SendMsg(m)
}
func (x *eventsChatServer) Recv() (*Event, error) {
m := new(Event)
if err := x.ServerStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
var _Events_serviceDesc = grpc.ServiceDesc{
ServiceName: "protos.Events",
HandlerType: (*EventsServer)(nil),
Methods: []grpc.MethodDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "Chat",
Handler: _Events_Chat_Handler,
ServerStreams: true,
ClientStreams: true,
},
},
Metadata: fileDescriptor4,
}
func init() { proto.RegisterFile("events.proto", fileDescriptor4) }
var fileDescriptor4 = []byte{
// 445 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x53, 0x5d, 0x6f, 0xd3, 0x30,
0x14, 0x6d, 0xda, 0xb5, 0xab, 0x6f, 0xd3, 0x29, 0xbb, 0x4c, 0x28, 0x8a, 0x78, 0x98, 0x82, 0x90,
0xaa, 0x3d, 0x14, 0x08, 0x15, 0xcf, 0x90, 0x2c, 0x62, 0x81, 0x91, 0x4a, 0x26, 0xfc, 0x80, 0x34,
0x78, 0x23, 0x7c, 0x24, 0x93, 0x1d, 0x10, 0xfc, 0x05, 0x1e, 0xf9, 0xc5, 0x78, 0x8e, 0x9d, 0x64,
0xf4, 0x69, 0x4f, 0xf5, 0xbd, 0xe7, 0x9c, 0x7b, 0x8f, 0x4f, 0x1d, 0xb0, 0xd9, 0x4f, 0x56, 0x35,
0x62, 0x7d, 0xc3, 0xeb, 0xa6, 0xc6, 0x99, 0xfa, 0x11, 0xde, 0x49, 0xf1, 0x39, 0x2f, 0xab, 0xa2,
0xfe, 0xc4, 0x14, 0xdc, 0xa2, 0x9e, 0x7d, 0x95, 0xef, 0x78, 0x59, 0xb4, 0x95, 0x9f, 0x82, 0x1d,
0x19, 0x16, 0x65, 0xd7, 0x78, 0x0a, 0x8b, 0x4e, 0x95, 0x9c, 0xbb, 0xd6, 0xa9, 0xb5, 0x22, 0x74,
0xd8, 0xc2, 0x47, 0x40, 0xd4, 0xb8, 0x34, 0xff, 0xce, 0xdc, 0xb1, 0xc2, 0xfb, 0x86, 0xff, 0xc7,
0x82, 0x79, 0x52, 0x35, 0x8c, 0x33, 0xd1, 0xe0, 0x53, 0x4d, 0xcd, 0x7e, 0xdf, 0x30, 0x35, 0xea,
0x28, 0x38, 0x6e, 0xf7, 0x8a, 0x75, 0x6c, 0x00, 0xda, 0x73, 0x30, 0x04, 0xa7, 0x18, 0xb8, 0x49,
0xaa, 0xab, 0x5a, 0xad, 0x58, 0x04, 0x27, 0x46, 0x37, 0x74, 0x7b, 0x31, 0xa2, 0x7b, 0xfc, 0x90,
0xc0, 0xa1, 0x3e, 0xfa, 0x1b, 0x98, 0xcb, 0x63, 0x29, 0xa4, 0x1d, 0x5c, 0xc1, 0xac, 0x0d, 0x49,
0x1a, 0x99, 0xc8, 0x81, 0x8e, 0x19, 0x68, 0xdc, 0x52, 0x8d, 0xfb, 0x97, 0x40, 0x28, 0xfb, 0xc2,
0x8a, 0xa6, 0xac, 0x2b, 0x7c, 0x0c, 0xe3, 0xe6, 0x97, 0xf2, 0xbe, 0x08, 0x1e, 0x18, 0x49, 0xc6,
0xf3, 0x4a, 0xe4, 0x8a, 0x40, 0x25, 0x8c, 0x1e, 0xcc, 0x19, 0xe7, 0x35, 0x7f, 0x2f, 0xae, 0x75,
0x22, 0x5d, 0xed, 0xbf, 0x04, 0xf8, 0x58, 0xf1, 0xfb, 0xbb, 0xf8, 0x3b, 0x86, 0xa9, 0xca, 0x08,
0xd7, 0x30, 0x37, 0x7a, 0x6d, 0xa4, 0x53, 0x99, 0xdb, 0xc9, 0x20, 0x3a, 0x0e, 0x3e, 0x81, 0xe9,
0xee, 0x5b, 0x5d, 0x7c, 0xd5, 0xc9, 0x2d, 0x0d, 0x39, 0xbc, 0x6d, 0x4a, 0x66, 0x8b, 0xe2, 0x2b,
0x38, 0xea, 0xb2, 0x53, 0x8b, 0xdc, 0x89, 0xe2, 0x3f, 0xdc, 0x4b, 0x5a, 0xa1, 0x52, 0xf8, 0x1f,
0x1f, 0x9f, 0x03, 0xe1, 0x26, 0x28, 0xf7, 0x40, 0x89, 0x8f, 0x7b, 0x67, 0x1a, 0x90, 0xba, 0x9e,
0x85, 0x1b, 0x80, 0x1f, 0x5d, 0x1a, 0xee, 0x54, 0x69, 0xd0, 0x68, 0xfa, 0x9c, 0xa4, 0x68, 0xc0,
0x0b, 0x0f, 0x75, 0x14, 0x67, 0x21, 0x90, 0xee, 0xdd, 0xa0, 0x2d, 0xff, 0xdd, 0xf8, 0x4d, 0xf2,
0x21, 0x8b, 0xa9, 0x33, 0x42, 0x02, 0xd3, 0xf0, 0x72, 0x1b, 0xbd, 0x73, 0x2c, 0x5c, 0x02, 0x89,
0x2e, 0x5e, 0x27, 0x69, 0xb4, 0x3d, 0x8f, 0x9d, 0xf1, 0x6d, 0x49, 0xe3, 0xb7, 0x71, 0x94, 0x25,
0xdb, 0xd4, 0x99, 0x04, 0x1b, 0x98, 0xa9, 0x19, 0x02, 0xcf, 0xe0, 0x40, 0xde, 0xb1, 0xc1, 0xe5,
0x9d, 0x37, 0xe9, 0xdd, 0x2d, 0xfd, 0xd1, 0xca, 0x7a, 0x66, 0xed, 0xda, 0x6f, 0xea, 0xc5, 0xbf,
0x00, 0x00, 0x00, 0xff, 0xff, 0x15, 0xb7, 0x5f, 0x65, 0x6a, 0x03, 0x00, 0x00,
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors/fabric.git
git@gitee.com:mirrors/fabric.git
mirrors
fabric
Hyperledger fabric
v0.6.1-preview

搜索帮助

0d507c66 1850385 C8b1a773 1850385