add mucp for config/source

This commit is contained in:
shu xian 2020-01-17 00:10:15 +08:00
parent eac2ab3c28
commit 071ab7aede
7 changed files with 1101 additions and 0 deletions

View File

@ -0,0 +1,72 @@
package mucp
import (
"context"
"github.com/micro/go-micro/config/cmd"
"github.com/micro/go-micro/config/source"
proto "github.com/micro/go-micro/config/source/mucp/proto"
"github.com/micro/go-micro/util/log"
)
var (
DefaultServiceName = "go.micro.config"
)
type mucpSource struct {
serviceName string
key string
opts source.Options
client proto.SourceService
}
func (m *mucpSource) Read() (set *source.ChangeSet, err error) {
req, err := m.client.Read(context.Background(), &proto.ReadRequest{Path: m.key})
if err != nil {
return nil, err
}
return toChangeSet(req.Change.ChangeSet), nil
}
func (m *mucpSource) Watch() (w source.Watcher, err error) {
stream, err := m.client.Watch(context.Background(), &proto.WatchRequest{Key: m.key})
if err != nil {
log.Error("watch err: ", err)
return
}
return newWatcher(stream)
}
// Write is unsupported
func (m *mucpSource) Write(cs *source.ChangeSet) error {
return nil
}
func (m *mucpSource) String() string {
return "mucp"
}
func NewSource(opts ...source.Option) source.Source {
var options source.Options
for _, o := range opts {
o(&options)
}
addr := DefaultServiceName
if options.Context != nil {
a, ok := options.Context.Value(serviceNameKey{}).(string)
if ok {
addr = a
}
}
s := &mucpSource{
serviceName: addr,
opts: options,
client: proto.NewSourceService(addr, *cmd.DefaultOptions().Client),
}
return s
}

View File

@ -0,0 +1,18 @@
package mucp
import (
"context"
"github.com/micro/go-micro/config/source"
)
type serviceNameKey struct{}
func ServiceName(a string) source.Option {
return func(o *source.Options) {
if o.Context == nil {
o.Context = context.Background()
}
o.Context = context.WithValue(o.Context, serviceNameKey{}, a)
}
}

View File

@ -0,0 +1,649 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto/mucp.proto
package mucp
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type ChangeSet struct {
Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
Checksum string `protobuf:"bytes,2,opt,name=checksum,proto3" json:"checksum,omitempty"`
Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"`
Source string `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"`
Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChangeSet) Reset() { *m = ChangeSet{} }
func (m *ChangeSet) String() string { return proto.CompactTextString(m) }
func (*ChangeSet) ProtoMessage() {}
func (*ChangeSet) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{0}
}
func (m *ChangeSet) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangeSet.Unmarshal(m, b)
}
func (m *ChangeSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChangeSet.Marshal(b, m, deterministic)
}
func (m *ChangeSet) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChangeSet.Merge(m, src)
}
func (m *ChangeSet) XXX_Size() int {
return xxx_messageInfo_ChangeSet.Size(m)
}
func (m *ChangeSet) XXX_DiscardUnknown() {
xxx_messageInfo_ChangeSet.DiscardUnknown(m)
}
var xxx_messageInfo_ChangeSet proto.InternalMessageInfo
func (m *ChangeSet) GetData() []byte {
if m != nil {
return m.Data
}
return nil
}
func (m *ChangeSet) GetChecksum() string {
if m != nil {
return m.Checksum
}
return ""
}
func (m *ChangeSet) GetFormat() string {
if m != nil {
return m.Format
}
return ""
}
func (m *ChangeSet) GetSource() string {
if m != nil {
return m.Source
}
return ""
}
func (m *ChangeSet) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
type Change struct {
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
ChangeSet *ChangeSet `protobuf:"bytes,3,opt,name=changeSet,proto3" json:"changeSet,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Change) Reset() { *m = Change{} }
func (m *Change) String() string { return proto.CompactTextString(m) }
func (*Change) ProtoMessage() {}
func (*Change) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{1}
}
func (m *Change) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Change.Unmarshal(m, b)
}
func (m *Change) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Change.Marshal(b, m, deterministic)
}
func (m *Change) XXX_Merge(src proto.Message) {
xxx_messageInfo_Change.Merge(m, src)
}
func (m *Change) XXX_Size() int {
return xxx_messageInfo_Change.Size(m)
}
func (m *Change) XXX_DiscardUnknown() {
xxx_messageInfo_Change.DiscardUnknown(m)
}
var xxx_messageInfo_Change proto.InternalMessageInfo
func (m *Change) GetKey() string {
if m != nil {
return m.Key
}
return ""
}
func (m *Change) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
func (m *Change) GetChangeSet() *ChangeSet {
if m != nil {
return m.ChangeSet
}
return nil
}
type CreateRequest struct {
Change *Change `protobuf:"bytes,1,opt,name=change,proto3" json:"change,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CreateRequest) Reset() { *m = CreateRequest{} }
func (m *CreateRequest) String() string { return proto.CompactTextString(m) }
func (*CreateRequest) ProtoMessage() {}
func (*CreateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{2}
}
func (m *CreateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateRequest.Unmarshal(m, b)
}
func (m *CreateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateRequest.Marshal(b, m, deterministic)
}
func (m *CreateRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_CreateRequest.Merge(m, src)
}
func (m *CreateRequest) XXX_Size() int {
return xxx_messageInfo_CreateRequest.Size(m)
}
func (m *CreateRequest) XXX_DiscardUnknown() {
xxx_messageInfo_CreateRequest.DiscardUnknown(m)
}
var xxx_messageInfo_CreateRequest proto.InternalMessageInfo
func (m *CreateRequest) GetChange() *Change {
if m != nil {
return m.Change
}
return nil
}
type CreateResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CreateResponse) Reset() { *m = CreateResponse{} }
func (m *CreateResponse) String() string { return proto.CompactTextString(m) }
func (*CreateResponse) ProtoMessage() {}
func (*CreateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{3}
}
func (m *CreateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CreateResponse.Unmarshal(m, b)
}
func (m *CreateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CreateResponse.Marshal(b, m, deterministic)
}
func (m *CreateResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_CreateResponse.Merge(m, src)
}
func (m *CreateResponse) XXX_Size() int {
return xxx_messageInfo_CreateResponse.Size(m)
}
func (m *CreateResponse) XXX_DiscardUnknown() {
xxx_messageInfo_CreateResponse.DiscardUnknown(m)
}
var xxx_messageInfo_CreateResponse proto.InternalMessageInfo
type UpdateRequest struct {
Change *Change `protobuf:"bytes,1,opt,name=change,proto3" json:"change,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UpdateRequest) Reset() { *m = UpdateRequest{} }
func (m *UpdateRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateRequest) ProtoMessage() {}
func (*UpdateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{4}
}
func (m *UpdateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateRequest.Unmarshal(m, b)
}
func (m *UpdateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UpdateRequest.Marshal(b, m, deterministic)
}
func (m *UpdateRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_UpdateRequest.Merge(m, src)
}
func (m *UpdateRequest) XXX_Size() int {
return xxx_messageInfo_UpdateRequest.Size(m)
}
func (m *UpdateRequest) XXX_DiscardUnknown() {
xxx_messageInfo_UpdateRequest.DiscardUnknown(m)
}
var xxx_messageInfo_UpdateRequest proto.InternalMessageInfo
func (m *UpdateRequest) GetChange() *Change {
if m != nil {
return m.Change
}
return nil
}
type UpdateResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UpdateResponse) Reset() { *m = UpdateResponse{} }
func (m *UpdateResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateResponse) ProtoMessage() {}
func (*UpdateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{5}
}
func (m *UpdateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateResponse.Unmarshal(m, b)
}
func (m *UpdateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UpdateResponse.Marshal(b, m, deterministic)
}
func (m *UpdateResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_UpdateResponse.Merge(m, src)
}
func (m *UpdateResponse) XXX_Size() int {
return xxx_messageInfo_UpdateResponse.Size(m)
}
func (m *UpdateResponse) XXX_DiscardUnknown() {
xxx_messageInfo_UpdateResponse.DiscardUnknown(m)
}
var xxx_messageInfo_UpdateResponse proto.InternalMessageInfo
type DeleteRequest struct {
Change *Change `protobuf:"bytes,1,opt,name=change,proto3" json:"change,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DeleteRequest) Reset() { *m = DeleteRequest{} }
func (m *DeleteRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteRequest) ProtoMessage() {}
func (*DeleteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{6}
}
func (m *DeleteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteRequest.Unmarshal(m, b)
}
func (m *DeleteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DeleteRequest.Marshal(b, m, deterministic)
}
func (m *DeleteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_DeleteRequest.Merge(m, src)
}
func (m *DeleteRequest) XXX_Size() int {
return xxx_messageInfo_DeleteRequest.Size(m)
}
func (m *DeleteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_DeleteRequest.DiscardUnknown(m)
}
var xxx_messageInfo_DeleteRequest proto.InternalMessageInfo
func (m *DeleteRequest) GetChange() *Change {
if m != nil {
return m.Change
}
return nil
}
type DeleteResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DeleteResponse) Reset() { *m = DeleteResponse{} }
func (m *DeleteResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteResponse) ProtoMessage() {}
func (*DeleteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{7}
}
func (m *DeleteResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteResponse.Unmarshal(m, b)
}
func (m *DeleteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DeleteResponse.Marshal(b, m, deterministic)
}
func (m *DeleteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_DeleteResponse.Merge(m, src)
}
func (m *DeleteResponse) XXX_Size() int {
return xxx_messageInfo_DeleteResponse.Size(m)
}
func (m *DeleteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_DeleteResponse.DiscardUnknown(m)
}
var xxx_messageInfo_DeleteResponse proto.InternalMessageInfo
type ListRequest struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListRequest) Reset() { *m = ListRequest{} }
func (m *ListRequest) String() string { return proto.CompactTextString(m) }
func (*ListRequest) ProtoMessage() {}
func (*ListRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{8}
}
func (m *ListRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListRequest.Unmarshal(m, b)
}
func (m *ListRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListRequest.Marshal(b, m, deterministic)
}
func (m *ListRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListRequest.Merge(m, src)
}
func (m *ListRequest) XXX_Size() int {
return xxx_messageInfo_ListRequest.Size(m)
}
func (m *ListRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ListRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ListRequest proto.InternalMessageInfo
type ListResponse struct {
Configs []*Change `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ListResponse) Reset() { *m = ListResponse{} }
func (m *ListResponse) String() string { return proto.CompactTextString(m) }
func (*ListResponse) ProtoMessage() {}
func (*ListResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{9}
}
func (m *ListResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListResponse.Unmarshal(m, b)
}
func (m *ListResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ListResponse.Marshal(b, m, deterministic)
}
func (m *ListResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ListResponse.Merge(m, src)
}
func (m *ListResponse) XXX_Size() int {
return xxx_messageInfo_ListResponse.Size(m)
}
func (m *ListResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ListResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ListResponse proto.InternalMessageInfo
func (m *ListResponse) GetConfigs() []*Change {
if m != nil {
return m.Configs
}
return nil
}
type ReadRequest struct {
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReadRequest) Reset() { *m = ReadRequest{} }
func (m *ReadRequest) String() string { return proto.CompactTextString(m) }
func (*ReadRequest) ProtoMessage() {}
func (*ReadRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{10}
}
func (m *ReadRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadRequest.Unmarshal(m, b)
}
func (m *ReadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReadRequest.Marshal(b, m, deterministic)
}
func (m *ReadRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReadRequest.Merge(m, src)
}
func (m *ReadRequest) XXX_Size() int {
return xxx_messageInfo_ReadRequest.Size(m)
}
func (m *ReadRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReadRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ReadRequest proto.InternalMessageInfo
func (m *ReadRequest) GetKey() string {
if m != nil {
return m.Key
}
return ""
}
func (m *ReadRequest) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
type ReadResponse struct {
Change *Change `protobuf:"bytes,1,opt,name=change,proto3" json:"change,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ReadResponse) Reset() { *m = ReadResponse{} }
func (m *ReadResponse) String() string { return proto.CompactTextString(m) }
func (*ReadResponse) ProtoMessage() {}
func (*ReadResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{11}
}
func (m *ReadResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReadResponse.Unmarshal(m, b)
}
func (m *ReadResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ReadResponse.Marshal(b, m, deterministic)
}
func (m *ReadResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReadResponse.Merge(m, src)
}
func (m *ReadResponse) XXX_Size() int {
return xxx_messageInfo_ReadResponse.Size(m)
}
func (m *ReadResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReadResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ReadResponse proto.InternalMessageInfo
func (m *ReadResponse) GetChange() *Change {
if m != nil {
return m.Change
}
return nil
}
type WatchRequest struct {
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *WatchRequest) Reset() { *m = WatchRequest{} }
func (m *WatchRequest) String() string { return proto.CompactTextString(m) }
func (*WatchRequest) ProtoMessage() {}
func (*WatchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{12}
}
func (m *WatchRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WatchRequest.Unmarshal(m, b)
}
func (m *WatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_WatchRequest.Marshal(b, m, deterministic)
}
func (m *WatchRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_WatchRequest.Merge(m, src)
}
func (m *WatchRequest) XXX_Size() int {
return xxx_messageInfo_WatchRequest.Size(m)
}
func (m *WatchRequest) XXX_DiscardUnknown() {
xxx_messageInfo_WatchRequest.DiscardUnknown(m)
}
var xxx_messageInfo_WatchRequest proto.InternalMessageInfo
func (m *WatchRequest) GetKey() string {
if m != nil {
return m.Key
}
return ""
}
type WatchResponse struct {
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
ChangeSet *ChangeSet `protobuf:"bytes,2,opt,name=changeSet,proto3" json:"changeSet,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *WatchResponse) Reset() { *m = WatchResponse{} }
func (m *WatchResponse) String() string { return proto.CompactTextString(m) }
func (*WatchResponse) ProtoMessage() {}
func (*WatchResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_942f149553cfb65d, []int{13}
}
func (m *WatchResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WatchResponse.Unmarshal(m, b)
}
func (m *WatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_WatchResponse.Marshal(b, m, deterministic)
}
func (m *WatchResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_WatchResponse.Merge(m, src)
}
func (m *WatchResponse) XXX_Size() int {
return xxx_messageInfo_WatchResponse.Size(m)
}
func (m *WatchResponse) XXX_DiscardUnknown() {
xxx_messageInfo_WatchResponse.DiscardUnknown(m)
}
var xxx_messageInfo_WatchResponse proto.InternalMessageInfo
func (m *WatchResponse) GetKey() string {
if m != nil {
return m.Key
}
return ""
}
func (m *WatchResponse) GetChangeSet() *ChangeSet {
if m != nil {
return m.ChangeSet
}
return nil
}
func init() {
proto.RegisterType((*ChangeSet)(nil), "ChangeSet")
proto.RegisterType((*Change)(nil), "Change")
proto.RegisterType((*CreateRequest)(nil), "CreateRequest")
proto.RegisterType((*CreateResponse)(nil), "CreateResponse")
proto.RegisterType((*UpdateRequest)(nil), "UpdateRequest")
proto.RegisterType((*UpdateResponse)(nil), "UpdateResponse")
proto.RegisterType((*DeleteRequest)(nil), "DeleteRequest")
proto.RegisterType((*DeleteResponse)(nil), "DeleteResponse")
proto.RegisterType((*ListRequest)(nil), "ListRequest")
proto.RegisterType((*ListResponse)(nil), "ListResponse")
proto.RegisterType((*ReadRequest)(nil), "ReadRequest")
proto.RegisterType((*ReadResponse)(nil), "ReadResponse")
proto.RegisterType((*WatchRequest)(nil), "WatchRequest")
proto.RegisterType((*WatchResponse)(nil), "WatchResponse")
}
func init() { proto.RegisterFile("proto/mucp.proto", fileDescriptor_942f149553cfb65d) }
var fileDescriptor_942f149553cfb65d = []byte{
// 425 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xdd, 0x6e, 0xd3, 0x30,
0x14, 0xc7, 0x93, 0xa6, 0xcb, 0xc8, 0xc9, 0x47, 0xab, 0x73, 0x81, 0xa2, 0x08, 0x89, 0x60, 0x09,
0x29, 0x02, 0xc9, 0x1b, 0xdd, 0x23, 0x8c, 0x3b, 0xb8, 0xf2, 0x84, 0xe0, 0xd6, 0xa4, 0xde, 0x52,
0x8d, 0x34, 0x21, 0x76, 0x2e, 0x78, 0x84, 0xbd, 0x35, 0x8a, 0xed, 0xb4, 0x49, 0x11, 0xb0, 0xde,
0x9d, 0xcf, 0xbf, 0xff, 0x3d, 0xbf, 0x06, 0xd6, 0x6d, 0xd7, 0xa8, 0xe6, 0xaa, 0xee, 0xcb, 0x96,
0xea, 0x90, 0x3c, 0xb9, 0x10, 0xdc, 0x56, 0x7c, 0xff, 0x20, 0xee, 0x84, 0x42, 0x84, 0xe5, 0x96,
0x2b, 0x9e, 0xba, 0xb9, 0x5b, 0x44, 0x4c, 0xc7, 0x98, 0xc1, 0x8b, 0xb2, 0x12, 0xe5, 0xa3, 0xec,
0xeb, 0x74, 0x91, 0xbb, 0x45, 0xc0, 0x0e, 0x39, 0xbe, 0x04, 0xff, 0xbe, 0xe9, 0x6a, 0xae, 0x52,
0x4f, 0x77, 0x6c, 0x36, 0xd4, 0x65, 0xd3, 0x77, 0xa5, 0x48, 0x97, 0xa6, 0x6e, 0x32, 0x7c, 0x05,
0x81, 0xda, 0xd5, 0x42, 0x2a, 0x5e, 0xb7, 0xe9, 0x45, 0xee, 0x16, 0x1e, 0x3b, 0x16, 0xc8, 0x37,
0xf0, 0x8d, 0x15, 0x5c, 0x83, 0xf7, 0x28, 0x7e, 0x69, 0x1b, 0x01, 0x1b, 0xc2, 0xc1, 0x59, 0xcb,
0x55, 0x65, 0x1d, 0xe8, 0x18, 0x0b, 0x08, 0xca, 0xd1, 0xba, 0x36, 0x10, 0x6e, 0x80, 0x1e, 0x7e,
0x0c, 0x3b, 0x36, 0xc9, 0x35, 0xc4, 0xb7, 0x9d, 0xe0, 0x4a, 0x30, 0xf1, 0xb3, 0x17, 0x52, 0xe1,
0x6b, 0xf0, 0x4d, 0x57, 0xbf, 0x11, 0x6e, 0x2e, 0xed, 0x1e, 0xb3, 0x65, 0xb2, 0x86, 0x64, 0xdc,
0x90, 0x6d, 0xb3, 0x97, 0x62, 0xd0, 0xf8, 0xd2, 0x6e, 0xcf, 0xd4, 0x18, 0x37, 0x8e, 0x1a, 0x1f,
0xc5, 0x0f, 0x71, 0x9e, 0xc6, 0xb8, 0x61, 0x35, 0x62, 0x08, 0x3f, 0xef, 0xa4, 0xb2, 0x0a, 0xe4,
0x03, 0x44, 0x26, 0x35, 0x6d, 0x7c, 0x03, 0x97, 0x65, 0xb3, 0xbf, 0xdf, 0x3d, 0xc8, 0xd4, 0xcd,
0xbd, 0xa9, 0xe4, 0x58, 0x27, 0x37, 0x10, 0x32, 0xc1, 0xb7, 0xa3, 0x87, 0x67, 0x1d, 0x9b, 0x5c,
0x41, 0x64, 0x96, 0xec, 0x3b, 0xff, 0x75, 0x9e, 0x43, 0xf4, 0x95, 0xab, 0xb2, 0xfa, 0xeb, 0x33,
0xe4, 0x13, 0xc4, 0x76, 0xc2, 0x6a, 0xfe, 0xe9, 0x64, 0x86, 0x78, 0xf1, 0x0f, 0xc4, 0x9b, 0xa7,
0x05, 0xf8, 0x77, 0xe6, 0x5f, 0xf6, 0x1e, 0x7c, 0xc3, 0x0e, 0x13, 0x3a, 0xc3, 0x9e, 0xad, 0xe8,
0x09, 0x54, 0x67, 0x18, 0x36, 0x90, 0x30, 0xa1, 0x33, 0xbe, 0xd9, 0x8a, 0x9e, 0xd0, 0xd3, 0xc3,
0x86, 0x06, 0x26, 0x74, 0x06, 0x32, 0x5b, 0xd1, 0x13, 0x4c, 0x0e, 0xbe, 0x85, 0xe5, 0x40, 0x06,
0x23, 0x3a, 0xe1, 0x95, 0xc5, 0x74, 0x8a, 0xcb, 0x8c, 0x0d, 0x87, 0xc5, 0x88, 0x4e, 0xa0, 0x64,
0x31, 0x9d, 0x5e, 0x9b, 0x38, 0xf8, 0x0e, 0x2e, 0xf4, 0xb1, 0x30, 0xa6, 0xd3, 0xb3, 0x66, 0x09,
0x9d, 0xdd, 0x90, 0x38, 0xd7, 0xee, 0x77, 0x5f, 0x7f, 0xdb, 0x37, 0xbf, 0x03, 0x00, 0x00, 0xff,
0xff, 0x66, 0x66, 0xa8, 0x5d, 0xef, 0x03, 0x00, 0x00,
}

View File

@ -0,0 +1,241 @@
// Code generated by protoc-gen-micro. DO NOT EDIT.
// source: proto/mucp.proto
package mucp
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
math "math"
)
import (
context "context"
client "github.com/micro/go-micro/client"
server "github.com/micro/go-micro/server"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ client.Option
var _ server.Option
// Client API for Source service
type SourceService interface {
Create(ctx context.Context, in *CreateRequest, opts ...client.CallOption) (*CreateResponse, error)
Update(ctx context.Context, in *UpdateRequest, opts ...client.CallOption) (*UpdateResponse, error)
Delete(ctx context.Context, in *DeleteRequest, opts ...client.CallOption) (*DeleteResponse, error)
List(ctx context.Context, in *ListRequest, opts ...client.CallOption) (*ListResponse, error)
Read(ctx context.Context, in *ReadRequest, opts ...client.CallOption) (*ReadResponse, error)
Watch(ctx context.Context, in *WatchRequest, opts ...client.CallOption) (Source_WatchService, error)
}
type sourceService struct {
c client.Client
name string
}
func NewSourceService(name string, c client.Client) SourceService {
if c == nil {
c = client.NewClient()
}
if len(name) == 0 {
name = "source"
}
return &sourceService{
c: c,
name: name,
}
}
func (c *sourceService) Create(ctx context.Context, in *CreateRequest, opts ...client.CallOption) (*CreateResponse, error) {
req := c.c.NewRequest(c.name, "Source.Create", in)
out := new(CreateResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sourceService) Update(ctx context.Context, in *UpdateRequest, opts ...client.CallOption) (*UpdateResponse, error) {
req := c.c.NewRequest(c.name, "Source.Update", in)
out := new(UpdateResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sourceService) Delete(ctx context.Context, in *DeleteRequest, opts ...client.CallOption) (*DeleteResponse, error) {
req := c.c.NewRequest(c.name, "Source.Delete", in)
out := new(DeleteResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sourceService) List(ctx context.Context, in *ListRequest, opts ...client.CallOption) (*ListResponse, error) {
req := c.c.NewRequest(c.name, "Source.List", in)
out := new(ListResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sourceService) Read(ctx context.Context, in *ReadRequest, opts ...client.CallOption) (*ReadResponse, error) {
req := c.c.NewRequest(c.name, "Source.Read", in)
out := new(ReadResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sourceService) Watch(ctx context.Context, in *WatchRequest, opts ...client.CallOption) (Source_WatchService, error) {
req := c.c.NewRequest(c.name, "Source.Watch", &WatchRequest{})
stream, err := c.c.Stream(ctx, req, opts...)
if err != nil {
return nil, err
}
if err := stream.Send(in); err != nil {
return nil, err
}
return &sourceServiceWatch{stream}, nil
}
type Source_WatchService interface {
SendMsg(interface{}) error
RecvMsg(interface{}) error
Close() error
Recv() (*WatchResponse, error)
}
type sourceServiceWatch struct {
stream client.Stream
}
func (x *sourceServiceWatch) Close() error {
return x.stream.Close()
}
func (x *sourceServiceWatch) SendMsg(m interface{}) error {
return x.stream.Send(m)
}
func (x *sourceServiceWatch) RecvMsg(m interface{}) error {
return x.stream.Recv(m)
}
func (x *sourceServiceWatch) Recv() (*WatchResponse, error) {
m := new(WatchResponse)
err := x.stream.Recv(m)
if err != nil {
return nil, err
}
return m, nil
}
// Server API for Source service
type SourceHandler interface {
Create(context.Context, *CreateRequest, *CreateResponse) error
Update(context.Context, *UpdateRequest, *UpdateResponse) error
Delete(context.Context, *DeleteRequest, *DeleteResponse) error
List(context.Context, *ListRequest, *ListResponse) error
Read(context.Context, *ReadRequest, *ReadResponse) error
Watch(context.Context, *WatchRequest, Source_WatchStream) error
}
func RegisterSourceHandler(s server.Server, hdlr SourceHandler, opts ...server.HandlerOption) error {
type source interface {
Create(ctx context.Context, in *CreateRequest, out *CreateResponse) error
Update(ctx context.Context, in *UpdateRequest, out *UpdateResponse) error
Delete(ctx context.Context, in *DeleteRequest, out *DeleteResponse) error
List(ctx context.Context, in *ListRequest, out *ListResponse) error
Read(ctx context.Context, in *ReadRequest, out *ReadResponse) error
Watch(ctx context.Context, stream server.Stream) error
}
type Source struct {
source
}
h := &sourceHandler{hdlr}
return s.Handle(s.NewHandler(&Source{h}, opts...))
}
type sourceHandler struct {
SourceHandler
}
func (h *sourceHandler) Create(ctx context.Context, in *CreateRequest, out *CreateResponse) error {
return h.SourceHandler.Create(ctx, in, out)
}
func (h *sourceHandler) Update(ctx context.Context, in *UpdateRequest, out *UpdateResponse) error {
return h.SourceHandler.Update(ctx, in, out)
}
func (h *sourceHandler) Delete(ctx context.Context, in *DeleteRequest, out *DeleteResponse) error {
return h.SourceHandler.Delete(ctx, in, out)
}
func (h *sourceHandler) List(ctx context.Context, in *ListRequest, out *ListResponse) error {
return h.SourceHandler.List(ctx, in, out)
}
func (h *sourceHandler) Read(ctx context.Context, in *ReadRequest, out *ReadResponse) error {
return h.SourceHandler.Read(ctx, in, out)
}
func (h *sourceHandler) Watch(ctx context.Context, stream server.Stream) error {
m := new(WatchRequest)
if err := stream.Recv(m); err != nil {
return err
}
return h.SourceHandler.Watch(ctx, m, &sourceWatchStream{stream})
}
type Source_WatchStream interface {
SendMsg(interface{}) error
RecvMsg(interface{}) error
Close() error
Send(*WatchResponse) error
}
type sourceWatchStream struct {
stream server.Stream
}
func (x *sourceWatchStream) Close() error {
return x.stream.Close()
}
func (x *sourceWatchStream) SendMsg(m interface{}) error {
return x.stream.Send(m)
}
func (x *sourceWatchStream) RecvMsg(m interface{}) error {
return x.stream.Recv(m)
}
func (x *sourceWatchStream) Send(m *WatchResponse) error {
return x.stream.Send(m)
}

View File

@ -0,0 +1,76 @@
syntax = "proto3";
service Source {
rpc Create (CreateRequest) returns (CreateResponse) {
}
rpc Update (UpdateRequest) returns (UpdateResponse) {
}
rpc Delete (DeleteRequest) returns (DeleteResponse) {
}
rpc List (ListRequest) returns (ListResponse) {
}
rpc Read (ReadRequest) returns (ReadResponse) {
}
rpc Watch (WatchRequest) returns (stream WatchResponse) {
}
}
message ChangeSet {
bytes data = 1;
string checksum = 2;
string format = 3;
string source = 4;
int64 timestamp = 5;
}
message Change {
string key = 1;
string path = 2;
ChangeSet changeSet = 3;
}
message CreateRequest {
Change change = 1;
}
message CreateResponse {
}
message UpdateRequest {
Change change = 1;
}
message UpdateResponse {
}
message DeleteRequest {
Change change = 1;
}
message DeleteResponse {
}
message ListRequest {
}
message ListResponse {
repeated Change configs = 1;
}
message ReadRequest {
string key = 1;
string path = 2;
}
message ReadResponse {
Change change = 1;
}
message WatchRequest {
string key = 1;
}
message WatchResponse {
string key = 1;
ChangeSet changeSet = 2;
}

View File

@ -0,0 +1,18 @@
package mucp
import (
"time"
"github.com/micro/go-micro/config/source"
proto "github.com/micro/go-micro/config/source/mucp/proto"
)
func toChangeSet(c *proto.ChangeSet) *source.ChangeSet {
return &source.ChangeSet{
Data: c.Data,
Checksum: c.Checksum,
Format: c.Format,
Timestamp: time.Unix(c.Timestamp, 0),
Source: c.Source,
}
}

View File

@ -0,0 +1,27 @@
package mucp
import (
"github.com/micro/go-micro/config/source"
proto "github.com/micro/go-micro/config/source/mucp/proto"
)
type watcher struct {
stream proto.Source_WatchService
}
func newWatcher(stream proto.Source_WatchService) (source.Watcher, error) {
return &watcher{stream: stream}, nil
}
func (w *watcher) Next() (*source.ChangeSet, error) {
var rsp proto.WatchResponse
err := w.stream.RecvMsg(&rsp)
if err != nil {
return nil, err
}
return toChangeSet(rsp.ChangeSet), nil
}
func (w *watcher) Stop() error {
return w.stream.Close()
}