Merge pull request #1118 from printfcoder/master

add mucp for config/source
This commit is contained in:
Asim Aslam 2020-01-21 22:35:35 +00:00 committed by GitHub
commit 8dbacb34f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 1138 additions and 0 deletions

View File

@ -0,0 +1,38 @@
package service
import (
"context"
"github.com/micro/go-micro/config/source"
)
type serviceNameKey struct{}
type keyKey struct{}
type pathKey struct{}
func ServiceName(name string) source.Option {
return func(o *source.Options) {
if o.Context == nil {
o.Context = context.Background()
}
o.Context = context.WithValue(o.Context, serviceNameKey{}, name)
}
}
func Key(key string) source.Option {
return func(o *source.Options) {
if o.Context == nil {
o.Context = context.Background()
}
o.Context = context.WithValue(o.Context, keyKey{}, key)
}
}
func Path(path string) source.Option {
return func(o *source.Options) {
if o.Context == nil {
o.Context = context.Background()
}
o.Context = context.WithValue(o.Context, pathKey{}, path)
}
}

View File

@ -0,0 +1,241 @@
// Code generated by protoc-gen-micro. DO NOT EDIT.
// source: proto/service.proto
package service
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 Service service
type Service 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) (Service_WatchService, error)
}
type service struct {
c client.Client
name string
}
func NewService(name string, c client.Client) Service {
if c == nil {
c = client.NewClient()
}
if len(name) == 0 {
name = "service"
}
return &service{
c: c,
name: name,
}
}
func (c *service) Create(ctx context.Context, in *CreateRequest, opts ...client.CallOption) (*CreateResponse, error) {
req := c.c.NewRequest(c.name, "Service.Create", in)
out := new(CreateResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *service) Update(ctx context.Context, in *UpdateRequest, opts ...client.CallOption) (*UpdateResponse, error) {
req := c.c.NewRequest(c.name, "Service.Update", in)
out := new(UpdateResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *service) Delete(ctx context.Context, in *DeleteRequest, opts ...client.CallOption) (*DeleteResponse, error) {
req := c.c.NewRequest(c.name, "Service.Delete", in)
out := new(DeleteResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *service) List(ctx context.Context, in *ListRequest, opts ...client.CallOption) (*ListResponse, error) {
req := c.c.NewRequest(c.name, "Service.List", in)
out := new(ListResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *service) Read(ctx context.Context, in *ReadRequest, opts ...client.CallOption) (*ReadResponse, error) {
req := c.c.NewRequest(c.name, "Service.Read", in)
out := new(ReadResponse)
err := c.c.Call(ctx, req, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *service) Watch(ctx context.Context, in *WatchRequest, opts ...client.CallOption) (Service_WatchService, error) {
req := c.c.NewRequest(c.name, "Service.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 &serviceWatch{stream}, nil
}
type Service_WatchService interface {
SendMsg(interface{}) error
RecvMsg(interface{}) error
Close() error
Recv() (*WatchResponse, error)
}
type serviceWatch struct {
stream client.Stream
}
func (x *serviceWatch) Close() error {
return x.stream.Close()
}
func (x *serviceWatch) SendMsg(m interface{}) error {
return x.stream.Send(m)
}
func (x *serviceWatch) RecvMsg(m interface{}) error {
return x.stream.Recv(m)
}
func (x *serviceWatch) Recv() (*WatchResponse, error) {
m := new(WatchResponse)
err := x.stream.Recv(m)
if err != nil {
return nil, err
}
return m, nil
}
// Server API for Service service
type ServiceHandler 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, Service_WatchStream) error
}
func RegisterServiceHandler(s server.Server, hdlr ServiceHandler, opts ...server.HandlerOption) error {
type service 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 Service struct {
service
}
h := &serviceHandler{hdlr}
return s.Handle(s.NewHandler(&Service{h}, opts...))
}
type serviceHandler struct {
ServiceHandler
}
func (h *serviceHandler) Create(ctx context.Context, in *CreateRequest, out *CreateResponse) error {
return h.ServiceHandler.Create(ctx, in, out)
}
func (h *serviceHandler) Update(ctx context.Context, in *UpdateRequest, out *UpdateResponse) error {
return h.ServiceHandler.Update(ctx, in, out)
}
func (h *serviceHandler) Delete(ctx context.Context, in *DeleteRequest, out *DeleteResponse) error {
return h.ServiceHandler.Delete(ctx, in, out)
}
func (h *serviceHandler) List(ctx context.Context, in *ListRequest, out *ListResponse) error {
return h.ServiceHandler.List(ctx, in, out)
}
func (h *serviceHandler) Read(ctx context.Context, in *ReadRequest, out *ReadResponse) error {
return h.ServiceHandler.Read(ctx, in, out)
}
func (h *serviceHandler) Watch(ctx context.Context, stream server.Stream) error {
m := new(WatchRequest)
if err := stream.Recv(m); err != nil {
return err
}
return h.ServiceHandler.Watch(ctx, m, &serviceWatchStream{stream})
}
type Service_WatchStream interface {
SendMsg(interface{}) error
RecvMsg(interface{}) error
Close() error
Send(*WatchResponse) error
}
type serviceWatchStream struct {
stream server.Stream
}
func (x *serviceWatchStream) Close() error {
return x.stream.Close()
}
func (x *serviceWatchStream) SendMsg(m interface{}) error {
return x.stream.Send(m)
}
func (x *serviceWatchStream) RecvMsg(m interface{}) error {
return x.stream.Recv(m)
}
func (x *serviceWatchStream) Send(m *WatchResponse) error {
return x.stream.Send(m)
}

View File

@ -0,0 +1,657 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto/service.proto
package service
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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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 {
Values []*Change `protobuf:"bytes,1,rep,name=values,proto3" json:"values,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_c33392ef2c1961ba, []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) GetValues() []*Change {
if m != nil {
return m.Values
}
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_c33392ef2c1961ba, []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_c33392ef2c1961ba, []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"`
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 *WatchRequest) Reset() { *m = WatchRequest{} }
func (m *WatchRequest) String() string { return proto.CompactTextString(m) }
func (*WatchRequest) ProtoMessage() {}
func (*WatchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_c33392ef2c1961ba, []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 ""
}
func (m *WatchRequest) GetPath() string {
if m != nil {
return m.Path
}
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_c33392ef2c1961ba, []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/service.proto", fileDescriptor_c33392ef2c1961ba) }
var fileDescriptor_c33392ef2c1961ba = []byte{
// 427 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xcf, 0x6a, 0xdb, 0x40,
0x10, 0xc6, 0x2d, 0xdb, 0x51, 0xaa, 0xb1, 0x24, 0x87, 0x29, 0x14, 0x21, 0x0a, 0x35, 0x0b, 0x05,
0xd3, 0xc2, 0x26, 0x38, 0x7d, 0x83, 0xf4, 0xd6, 0x9e, 0x36, 0x94, 0xf6, 0xba, 0x95, 0xa7, 0xb5,
0x49, 0x14, 0xa9, 0xda, 0x55, 0xa0, 0x8f, 0xd0, 0x3e, 0x75, 0xd9, 0x3f, 0x8a, 0x24, 0x17, 0x4c,
0x7c, 0xdb, 0x99, 0xd9, 0xf9, 0xe6, 0xd3, 0xfc, 0x56, 0xf0, 0xb2, 0x6e, 0x2a, 0x5d, 0x5d, 0x2a,
0x6a, 0x1e, 0xf7, 0x05, 0x71, 0x1b, 0xb1, 0x3f, 0x01, 0x44, 0x37, 0x3b, 0xf9, 0xf0, 0x93, 0x6e,
0x49, 0x23, 0xc2, 0x7c, 0x2b, 0xb5, 0xcc, 0x82, 0x55, 0xb0, 0x8e, 0x85, 0x3d, 0x63, 0x0e, 0x2f,
0x8a, 0x1d, 0x15, 0x77, 0xaa, 0x2d, 0xb3, 0xe9, 0x2a, 0x58, 0x47, 0xe2, 0x29, 0xc6, 0x57, 0x10,
0xfe, 0xa8, 0x9a, 0x52, 0xea, 0x6c, 0x66, 0x2b, 0x3e, 0x32, 0x79, 0x55, 0xb5, 0x4d, 0x41, 0xd9,
0xdc, 0xe5, 0x5d, 0x84, 0xaf, 0x21, 0xd2, 0xfb, 0x92, 0x94, 0x96, 0x65, 0x9d, 0x9d, 0xad, 0x82,
0xf5, 0x4c, 0xf4, 0x09, 0xf6, 0x0d, 0x42, 0x67, 0x05, 0x2f, 0x60, 0x76, 0x47, 0xbf, 0xad, 0x8d,
0x48, 0x98, 0xa3, 0x71, 0x56, 0x4b, 0xbd, 0xf3, 0x0e, 0xec, 0x19, 0xd7, 0x10, 0x15, 0x9d, 0x75,
0x6b, 0x60, 0xb1, 0x01, 0xfe, 0xf4, 0x31, 0xa2, 0x2f, 0xb2, 0x2b, 0x48, 0x6e, 0x1a, 0x92, 0x9a,
0x04, 0xfd, 0x6a, 0x49, 0x69, 0x7c, 0x03, 0xa1, 0xab, 0xda, 0x19, 0x8b, 0xcd, 0xb9, 0xef, 0x13,
0x3e, 0xcd, 0x2e, 0x20, 0xed, 0x3a, 0x54, 0x5d, 0x3d, 0x28, 0x32, 0x1a, 0x5f, 0xea, 0xed, 0x89,
0x1a, 0x5d, 0x47, 0xaf, 0xf1, 0x91, 0xee, 0xe9, 0x34, 0x8d, 0xae, 0xc3, 0x6b, 0x24, 0xb0, 0xf8,
0xbc, 0x57, 0xda, 0x2b, 0xb0, 0x4b, 0x88, 0x5d, 0xe8, 0xca, 0x46, 0xf1, 0x51, 0xde, 0xb7, 0xa4,
0xb2, 0x60, 0x35, 0x1b, 0x29, 0xba, 0x34, 0xbb, 0x86, 0x85, 0x20, 0xb9, 0xed, 0x1c, 0x3c, 0x6b,
0xd5, 0x66, 0x8a, 0x6b, 0xea, 0xa7, 0x1c, 0xf7, 0xfd, 0x01, 0xe2, 0xaf, 0x52, 0x17, 0xbb, 0xd3,
0xc6, 0x7c, 0x82, 0xc4, 0x77, 0xf9, 0x39, 0xff, 0xb7, 0x8d, 0xa0, 0x4f, 0x8f, 0x40, 0xdf, 0xfc,
0x9d, 0xc2, 0xf9, 0xad, 0x7b, 0xec, 0xf8, 0x1e, 0x42, 0x87, 0x13, 0x53, 0x3e, 0x7a, 0x09, 0xf9,
0x92, 0x1f, 0x70, 0x9e, 0x98, 0xcb, 0x8e, 0x1b, 0xa6, 0x7c, 0x84, 0x3c, 0x5f, 0xf2, 0x03, 0xa0,
0xf6, 0xb2, 0x03, 0x84, 0x29, 0x1f, 0xb1, 0xcd, 0x97, 0xfc, 0x80, 0xdc, 0x04, 0xdf, 0xc2, 0xdc,
0xc0, 0xc2, 0x98, 0x0f, 0x10, 0xe6, 0x09, 0x1f, 0x12, 0x74, 0xd7, 0xcc, 0xb6, 0x31, 0xe6, 0x03,
0x52, 0x79, 0xc2, 0x87, 0x08, 0xd8, 0x04, 0xdf, 0xc1, 0x99, 0xdd, 0x16, 0x26, 0x7c, 0xb8, 0xeb,
0x3c, 0xe5, 0xa3, 0x25, 0xb2, 0xc9, 0x55, 0xf0, 0x3d, 0xb4, 0xbf, 0xfb, 0xf5, 0xbf, 0x00, 0x00,
0x00, 0xff, 0xff, 0xc3, 0x45, 0xac, 0x57, 0x05, 0x04, 0x00, 0x00,
}

View File

@ -0,0 +1,67 @@
syntax = "proto3";
service Service {
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 values = 1;
}
message ReadRequest {
string key = 1;
string path = 2;
}
message ReadResponse {
Change change = 1;
}
message WatchRequest {
string key = 1;
string path = 2;
}
message WatchResponse {
string key = 1;
ChangeSet changeSet = 2;
}

View File

@ -0,0 +1,90 @@
package service
import (
"context"
"github.com/micro/go-micro/client"
"github.com/micro/go-micro/config/source"
proto "github.com/micro/go-micro/config/source/service/proto"
"github.com/micro/go-micro/util/log"
)
var (
DefaultName = "go.micro.config"
DefaultKey = "NAMESPACE:CONFIG"
DefaultPath = ""
DefaultClient = client.DefaultClient
)
type service struct {
serviceName string
key string
path string
opts source.Options
client proto.Service
}
func (m *service) Read() (set *source.ChangeSet, err error) {
req, err := m.client.Read(context.Background(), &proto.ReadRequest{Key: m.key, Path: m.path})
if err != nil {
return nil, err
}
return toChangeSet(req.Change.ChangeSet), nil
}
func (m *service) Watch() (w source.Watcher, err error) {
stream, err := m.client.Watch(context.Background(), &proto.WatchRequest{Key: m.key, Path: m.path})
if err != nil {
log.Error("watch err: ", err)
return
}
return newWatcher(stream)
}
// Write is unsupported
func (m *service) Write(cs *source.ChangeSet) error {
return nil
}
func (m *service) String() string {
return "service"
}
func NewSource(opts ...source.Option) source.Source {
var options source.Options
for _, o := range opts {
o(&options)
}
addr := DefaultName
key := DefaultKey
path := DefaultPath
if options.Context != nil {
a, ok := options.Context.Value(serviceNameKey{}).(string)
if ok {
addr = a
}
k, ok := options.Context.Value(keyKey{}).(string)
if ok {
key = k
}
p, ok := options.Context.Value(pathKey{}).(string)
if ok {
path = p
}
}
s := &service{
serviceName: addr,
opts: options,
key: key,
path: path,
client: proto.NewService(addr, DefaultClient),
}
return s
}

View File

@ -0,0 +1,18 @@
package service
import (
"time"
"github.com/micro/go-micro/config/source"
proto "github.com/micro/go-micro/config/source/service/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 service
import (
"github.com/micro/go-micro/config/source"
proto "github.com/micro/go-micro/config/source/service/proto"
)
type watcher struct {
stream proto.Service_WatchService
}
func newWatcher(stream proto.Service_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()
}