add CreateViewMessage for broadcaster

This commit is contained in:
Travis Turner 2018-01-29 09:34:56 -06:00
parent 54e3235199
commit 9b8d1ad4f9
No known key found for this signature in database
GPG key ID: 7F08008DFD9314C9
5 changed files with 369 additions and 101 deletions

View file

@ -130,19 +130,20 @@ func (n *nopGossiper) SendAsync(pb proto.Message) error {
// Broadcast message types.
const (
MessageTypeCreateSlice = 1
MessageTypeCreateIndex = 2
MessageTypeDeleteIndex = 3
MessageTypeCreateFrame = 4
MessageTypeDeleteFrame = 5
MessageTypeCreateInputDefinition = 6
MessageTypeDeleteInputDefinition = 7
MessageTypeDeleteView = 8
MessageTypeClusterStatus = 9
MessageTypeResizeInstruction = 10
MessageTypeResizeInstructionComplete = 11
MessageTypeSetCoordinator = 12
MessageTypeNodeState = 13
MessageTypeCreateSlice = iota
MessageTypeCreateIndex
MessageTypeDeleteIndex
MessageTypeCreateFrame
MessageTypeDeleteFrame
MessageTypeCreateView
MessageTypeDeleteView
MessageTypeCreateInputDefinition
MessageTypeDeleteInputDefinition
MessageTypeClusterStatus
MessageTypeResizeInstruction
MessageTypeResizeInstructionComplete
MessageTypeSetCoordinator
MessageTypeNodeState
)
// MarshalMessage encodes the protobuf message into a byte slice.
@ -159,12 +160,14 @@ func MarshalMessage(m proto.Message) ([]byte, error) {
typ = MessageTypeCreateFrame
case *internal.DeleteFrameMessage:
typ = MessageTypeDeleteFrame
case *internal.CreateViewMessage:
typ = MessageTypeCreateView
case *internal.DeleteViewMessage:
typ = MessageTypeDeleteView
case *internal.CreateInputDefinitionMessage:
typ = MessageTypeCreateInputDefinition
case *internal.DeleteInputDefinitionMessage:
typ = MessageTypeDeleteInputDefinition
case *internal.DeleteViewMessage:
typ = MessageTypeDeleteView
case *internal.ClusterStatus:
typ = MessageTypeClusterStatus
case *internal.ResizeInstruction:
@ -201,12 +204,14 @@ func UnmarshalMessage(buf []byte) (proto.Message, error) {
m = &internal.CreateFrameMessage{}
case MessageTypeDeleteFrame:
m = &internal.DeleteFrameMessage{}
case MessageTypeCreateView:
m = &internal.CreateViewMessage{}
case MessageTypeDeleteView:
m = &internal.DeleteViewMessage{}
case MessageTypeCreateInputDefinition:
m = &internal.CreateInputDefinitionMessage{}
case MessageTypeDeleteInputDefinition:
m = &internal.DeleteInputDefinitionMessage{}
case MessageTypeDeleteView:
m = &internal.DeleteViewMessage{}
case MessageTypeClusterStatus:
m = &internal.ClusterStatus{}
case MessageTypeResizeInstruction:

View file

@ -571,7 +571,30 @@ func (f *Frame) RecalculateCaches() {
}
// CreateViewIfNotExists returns the named view, creating it if necessary.
// Additionally, a CreateViewMessage is sent to the cluster.
func (f *Frame) CreateViewIfNotExists(name string) (*View, error) {
view, err := f.CreateViewIfNotExistsBase(name)
if err != nil {
return nil, err
}
// Broadcast view creation to the cluster.
err = f.broadcaster.SendSync(
&internal.CreateViewMessage{
Index: f.index,
Frame: f.name,
View: name,
})
if err != nil {
return nil, err
}
return view, nil
}
// CreateViewIfNotExistsBase returns the named view, creating it if necessary.
func (f *Frame) CreateViewIfNotExistsBase(name string) (*View, error) {
// Don't create inverse views if they are not enabled.
if !f.InverseEnabled() && IsInverseView(name) {
return nil, ErrFrameInverseDisabled

View file

@ -34,6 +34,7 @@
NodeStatus
ClusterStatus
Field
CreateViewMessage
DeleteViewMessage
ResizeInstruction
ResizeSource
@ -800,6 +801,38 @@ func (m *Field) GetMax() int64 {
return 0
}
type CreateViewMessage struct {
Index string `protobuf:"bytes,1,opt,name=Index,proto3" json:"Index,omitempty"`
Frame string `protobuf:"bytes,2,opt,name=Frame,proto3" json:"Frame,omitempty"`
View string `protobuf:"bytes,3,opt,name=View,proto3" json:"View,omitempty"`
}
func (m *CreateViewMessage) Reset() { *m = CreateViewMessage{} }
func (m *CreateViewMessage) String() string { return proto.CompactTextString(m) }
func (*CreateViewMessage) ProtoMessage() {}
func (*CreateViewMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{25} }
func (m *CreateViewMessage) GetIndex() string {
if m != nil {
return m.Index
}
return ""
}
func (m *CreateViewMessage) GetFrame() string {
if m != nil {
return m.Frame
}
return ""
}
func (m *CreateViewMessage) GetView() string {
if m != nil {
return m.View
}
return ""
}
type DeleteViewMessage struct {
Index string `protobuf:"bytes,1,opt,name=Index,proto3" json:"Index,omitempty"`
Frame string `protobuf:"bytes,2,opt,name=Frame,proto3" json:"Frame,omitempty"`
@ -809,7 +842,7 @@ type DeleteViewMessage struct {
func (m *DeleteViewMessage) Reset() { *m = DeleteViewMessage{} }
func (m *DeleteViewMessage) String() string { return proto.CompactTextString(m) }
func (*DeleteViewMessage) ProtoMessage() {}
func (*DeleteViewMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{25} }
func (*DeleteViewMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{26} }
func (m *DeleteViewMessage) GetIndex() string {
if m != nil {
@ -844,7 +877,7 @@ type ResizeInstruction struct {
func (m *ResizeInstruction) Reset() { *m = ResizeInstruction{} }
func (m *ResizeInstruction) String() string { return proto.CompactTextString(m) }
func (*ResizeInstruction) ProtoMessage() {}
func (*ResizeInstruction) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{26} }
func (*ResizeInstruction) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{27} }
func (m *ResizeInstruction) GetJobID() int64 {
if m != nil {
@ -899,7 +932,7 @@ type ResizeSource struct {
func (m *ResizeSource) Reset() { *m = ResizeSource{} }
func (m *ResizeSource) String() string { return proto.CompactTextString(m) }
func (*ResizeSource) ProtoMessage() {}
func (*ResizeSource) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{27} }
func (*ResizeSource) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{28} }
func (m *ResizeSource) GetURI() *URI {
if m != nil {
@ -946,7 +979,7 @@ func (m *ResizeInstructionComplete) Reset() { *m = ResizeInstructionComp
func (m *ResizeInstructionComplete) String() string { return proto.CompactTextString(m) }
func (*ResizeInstructionComplete) ProtoMessage() {}
func (*ResizeInstructionComplete) Descriptor() ([]byte, []int) {
return fileDescriptorPrivate, []int{28}
return fileDescriptorPrivate, []int{29}
}
func (m *ResizeInstructionComplete) GetJobID() int64 {
@ -978,7 +1011,7 @@ type SetCoordinatorMessage struct {
func (m *SetCoordinatorMessage) Reset() { *m = SetCoordinatorMessage{} }
func (m *SetCoordinatorMessage) String() string { return proto.CompactTextString(m) }
func (*SetCoordinatorMessage) ProtoMessage() {}
func (*SetCoordinatorMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{29} }
func (*SetCoordinatorMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{30} }
func (m *SetCoordinatorMessage) GetOld() *URI {
if m != nil {
@ -1002,7 +1035,7 @@ type Topology struct {
func (m *Topology) Reset() { *m = Topology{} }
func (m *Topology) String() string { return proto.CompactTextString(m) }
func (*Topology) ProtoMessage() {}
func (*Topology) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{30} }
func (*Topology) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{31} }
func (m *Topology) GetNodeSet() []*URI {
if m != nil {
@ -1044,6 +1077,7 @@ func init() {
proto.RegisterType((*NodeStatus)(nil), "internal.NodeStatus")
proto.RegisterType((*ClusterStatus)(nil), "internal.ClusterStatus")
proto.RegisterType((*Field)(nil), "internal.Field")
proto.RegisterType((*CreateViewMessage)(nil), "internal.CreateViewMessage")
proto.RegisterType((*DeleteViewMessage)(nil), "internal.DeleteViewMessage")
proto.RegisterType((*ResizeInstruction)(nil), "internal.ResizeInstruction")
proto.RegisterType((*ResizeSource)(nil), "internal.ResizeSource")
@ -2063,6 +2097,42 @@ func (m *Field) MarshalTo(dAtA []byte) (int, error) {
return i, nil
}
func (m *CreateViewMessage) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *CreateViewMessage) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
if len(m.Index) > 0 {
dAtA[i] = 0xa
i++
i = encodeVarintPrivate(dAtA, i, uint64(len(m.Index)))
i += copy(dAtA[i:], m.Index)
}
if len(m.Frame) > 0 {
dAtA[i] = 0x12
i++
i = encodeVarintPrivate(dAtA, i, uint64(len(m.Frame)))
i += copy(dAtA[i:], m.Frame)
}
if len(m.View) > 0 {
dAtA[i] = 0x1a
i++
i = encodeVarintPrivate(dAtA, i, uint64(len(m.View)))
i += copy(dAtA[i:], m.View)
}
return i, nil
}
func (m *DeleteViewMessage) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2810,6 +2880,24 @@ func (m *Field) Size() (n int) {
return n
}
func (m *CreateViewMessage) Size() (n int) {
var l int
_ = l
l = len(m.Index)
if l > 0 {
n += 1 + l + sovPrivate(uint64(l))
}
l = len(m.Frame)
if l > 0 {
n += 1 + l + sovPrivate(uint64(l))
}
l = len(m.View)
if l > 0 {
n += 1 + l + sovPrivate(uint64(l))
}
return n
}
func (m *DeleteViewMessage) Size() (n int) {
var l int
_ = l
@ -6399,6 +6487,143 @@ func (m *Field) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *CreateViewMessage) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: CreateViewMessage: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: CreateViewMessage: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthPrivate
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Index = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Frame", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthPrivate
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Frame = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field View", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthPrivate
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.View = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipPrivate(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthPrivate
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *DeleteViewMessage) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -7422,82 +7647,82 @@ var (
func init() { proto.RegisterFile("private.proto", fileDescriptorPrivate) }
var fileDescriptorPrivate = []byte{
// 1222 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcf, 0x6f, 0x1b, 0xc5,
0x17, 0xff, 0xae, 0xd7, 0x76, 0xec, 0xe7, 0xba, 0x75, 0xe7, 0x9b, 0x06, 0x27, 0x8a, 0x5c, 0x33,
0x07, 0x12, 0x2a, 0x11, 0xc0, 0x95, 0x10, 0x04, 0x55, 0x82, 0xc6, 0xae, 0xba, 0x40, 0x92, 0x76,
0x9c, 0x16, 0xc1, 0x01, 0x69, 0x62, 0x0f, 0xc9, 0x2a, 0xeb, 0x5d, 0xb3, 0x3b, 0x4e, 0xe2, 0x1e,
0xb8, 0xc1, 0x01, 0xee, 0x88, 0x3b, 0xff, 0x0c, 0x47, 0xfe, 0x04, 0x14, 0xfe, 0x08, 0x24, 0x2e,
0xa0, 0x79, 0x3b, 0xb3, 0xbb, 0xfe, 0x95, 0x34, 0xb9, 0xed, 0x7b, 0xf3, 0x79, 0x6f, 0x3e, 0xf3,
0x7e, 0xcd, 0x2c, 0x54, 0x87, 0xa1, 0x7b, 0xca, 0xa5, 0xd8, 0x1a, 0x86, 0x81, 0x0c, 0x48, 0xc9,
0xf5, 0xa5, 0x08, 0x7d, 0xee, 0xd1, 0x7d, 0x28, 0x3b, 0x7e, 0x5f, 0x9c, 0xef, 0x0a, 0xc9, 0x49,
0x13, 0x2a, 0x3b, 0x81, 0x37, 0x1a, 0xf8, 0x5f, 0xf0, 0x43, 0xe1, 0xd5, 0xad, 0xa6, 0xb5, 0x59,
0x66, 0x59, 0x95, 0x42, 0x1c, 0xb8, 0x03, 0xf1, 0x7c, 0xc4, 0x7d, 0x39, 0x1a, 0xd4, 0x73, 0x31,
0x22, 0xa3, 0xa2, 0xff, 0x58, 0x50, 0x7e, 0x12, 0xf2, 0x81, 0x40, 0x8f, 0x6b, 0x50, 0x62, 0xc1,
0x59, 0xd6, 0x5d, 0x22, 0x93, 0xb7, 0xe0, 0xb6, 0xe3, 0x9f, 0x8a, 0x30, 0x12, 0x1d, 0x9f, 0x1f,
0x7a, 0xa2, 0x8f, 0xee, 0x4a, 0x6c, 0x4a, 0x4b, 0xd6, 0xa1, 0xbc, 0xc3, 0x7b, 0xc7, 0xe2, 0x60,
0x3c, 0x14, 0x75, 0x1b, 0x9d, 0xa4, 0x8a, 0x64, 0xb5, 0xeb, 0xbe, 0x12, 0xf5, 0x7c, 0xd3, 0xda,
0xac, 0xb2, 0x54, 0x31, 0xcd, 0xb7, 0x30, 0xc3, 0x97, 0x50, 0xb8, 0xc5, 0xb8, 0x7f, 0x94, 0x70,
0x28, 0x22, 0x87, 0x09, 0x1d, 0xd9, 0x80, 0xe2, 0x13, 0x57, 0x78, 0xfd, 0xa8, 0xbe, 0xd4, 0xb4,
0x37, 0x2b, 0xad, 0x3b, 0x5b, 0x26, 0x7e, 0x5b, 0xa8, 0x67, 0x7a, 0x99, 0x52, 0xb8, 0xed, 0x0c,
0x86, 0x41, 0x28, 0x99, 0x88, 0x86, 0x81, 0x1f, 0x09, 0x52, 0x03, 0xbb, 0x13, 0x86, 0xfa, 0xec,
0xea, 0x93, 0x7e, 0x0f, 0xb5, 0xc7, 0x5e, 0xd0, 0x3b, 0x69, 0x73, 0xc9, 0x99, 0xf8, 0x6e, 0x24,
0x22, 0x49, 0x96, 0xa1, 0x80, 0x59, 0xd0, 0xb8, 0x58, 0x50, 0x5a, 0x8c, 0xa4, 0x0e, 0x73, 0x2c,
0x28, 0x2d, 0xda, 0x63, 0x28, 0xf2, 0x2c, 0x16, 0x94, 0xb6, 0xeb, 0xb9, 0xbd, 0x38, 0x04, 0x79,
0x16, 0x0b, 0x84, 0x40, 0xfe, 0xa5, 0x2b, 0xce, 0xf4, 0xb9, 0xf1, 0x9b, 0x3a, 0x70, 0x37, 0xb3,
0xbf, 0xa6, 0xb9, 0x02, 0x45, 0x16, 0x9c, 0x39, 0xed, 0xa8, 0x6e, 0x35, 0xed, 0xcd, 0x3c, 0xd3,
0x12, 0x46, 0x17, 0xd3, 0xaf, 0x96, 0x72, 0xb8, 0x94, 0x2a, 0xe8, 0x2a, 0x14, 0x30, 0xd4, 0xea,
0x94, 0xa9, 0xad, 0xfa, 0xa4, 0xff, 0x5a, 0x50, 0xde, 0xe5, 0xe7, 0x48, 0x23, 0x22, 0x8f, 0xa0,
0xd4, 0x95, 0xdc, 0xef, 0xf3, 0xb0, 0x8f, 0xa0, 0x4a, 0xeb, 0xcd, 0x34, 0x84, 0x09, 0x6c, 0xcb,
0x60, 0x3a, 0xbe, 0x0c, 0xc7, 0x2c, 0x31, 0x21, 0xdb, 0xb0, 0xa4, 0x6b, 0x02, 0x39, 0x54, 0x5a,
0xcd, 0x79, 0xd6, 0x49, 0xd9, 0x28, 0x63, 0x63, 0xb0, 0xf6, 0x31, 0x54, 0x27, 0xdc, 0x2a, 0xae,
0x27, 0x62, 0x6c, 0x32, 0x72, 0x22, 0xc6, 0x2a, 0x76, 0xa7, 0xdc, 0x1b, 0xc5, 0x71, 0xce, 0xb3,
0x58, 0xd8, 0xce, 0x7d, 0x68, 0xad, 0x6d, 0xc3, 0xad, 0xac, 0xd7, 0xeb, 0xd8, 0xd2, 0x6f, 0x80,
0xec, 0x84, 0x82, 0x4b, 0x81, 0xf4, 0x76, 0x45, 0x14, 0xf1, 0x23, 0xb1, 0x38, 0xd3, 0x71, 0xf6,
0x72, 0xd9, 0xec, 0xad, 0x43, 0xd9, 0x89, 0xcc, 0xc1, 0x6d, 0xac, 0xcb, 0x54, 0x41, 0x1f, 0x00,
0x69, 0x0b, 0x4f, 0x48, 0xa1, 0xfb, 0xf7, 0x12, 0xff, 0xb4, 0x6b, 0xb8, 0x5c, 0x8d, 0x25, 0x1b,
0x90, 0x57, 0xad, 0x8b, 0x54, 0x2a, 0xad, 0xff, 0xa7, 0x91, 0x4e, 0xe6, 0x04, 0x43, 0x00, 0x75,
0x8d, 0x53, 0xdd, 0xee, 0x57, 0x1c, 0x70, 0x4e, 0x29, 0x9b, 0xad, 0xec, 0xe9, 0xad, 0x92, 0x01,
0xa2, 0xb7, 0xfa, 0xc4, 0x9c, 0xf5, 0xa6, 0x5b, 0xd1, 0xaf, 0xb5, 0x56, 0xb5, 0xc4, 0x9e, 0x5a,
0x8d, 0x6d, 0xf0, 0x7b, 0xf1, 0x91, 0xa7, 0x78, 0x28, 0xdf, 0xaa, 0x87, 0xa2, 0xba, 0xdd, 0xb4,
0x95, 0x6f, 0x14, 0xe8, 0x43, 0x28, 0x76, 0x7b, 0xc7, 0x62, 0xc0, 0xc9, 0xdb, 0xaa, 0x50, 0xfb,
0xe2, 0x5c, 0x44, 0xba, 0xcc, 0xef, 0x4c, 0x85, 0x8f, 0x99, 0x75, 0xfa, 0xb3, 0xa5, 0xd9, 0x2f,
0x60, 0x54, 0xc4, 0xbd, 0xa3, 0x7a, 0x7e, 0x66, 0xe2, 0x28, 0x3d, 0xd3, 0xcb, 0xa4, 0x03, 0x35,
0xc7, 0x1f, 0x8e, 0x64, 0x5b, 0x7c, 0xeb, 0xfa, 0xae, 0x74, 0x03, 0x3f, 0xaa, 0x17, 0xd1, 0x64,
0x35, 0xbb, 0xf5, 0x04, 0x82, 0xcd, 0x98, 0xd0, 0x1f, 0x2d, 0xb8, 0x33, 0xa5, 0xbc, 0x82, 0x57,
0xee, 0x72, 0x5e, 0x1f, 0x24, 0x23, 0xd3, 0x46, 0x60, 0x63, 0x21, 0x9b, 0xc9, 0x09, 0xfa, 0x9b,
0x05, 0xcb, 0xf3, 0x00, 0x73, 0xd9, 0x34, 0x00, 0x9e, 0x85, 0xee, 0x80, 0x87, 0xe3, 0xcf, 0xc5,
0x58, 0xdf, 0x1e, 0x19, 0x0d, 0xf9, 0x12, 0x56, 0xa6, 0x7c, 0x7d, 0xda, 0x8b, 0x43, 0x14, 0x93,
0xba, 0xbf, 0x90, 0x54, 0x8c, 0x63, 0x0b, 0xcc, 0xe9, 0xdf, 0x16, 0xdc, 0x9b, 0xbb, 0x94, 0x56,
0x9f, 0x95, 0x2d, 0xf4, 0x07, 0x50, 0x7b, 0xa9, 0x06, 0x43, 0x5b, 0x44, 0xd2, 0xf5, 0xb9, 0x42,
0xea, 0xf2, 0x9c, 0xd1, 0x13, 0x07, 0x4a, 0xa8, 0xdb, 0xe5, 0x43, 0x4d, 0xf3, 0x9d, 0x2b, 0x68,
0x6e, 0x19, 0xbc, 0x9e, 0x9b, 0x46, 0x54, 0x64, 0x70, 0x8e, 0x9b, 0x4b, 0x01, 0x05, 0x35, 0x11,
0x27, 0x0c, 0xae, 0x35, 0xd5, 0x02, 0x58, 0x37, 0x93, 0x64, 0x82, 0xc9, 0xe5, 0x3d, 0xf9, 0x11,
0x40, 0x0a, 0xd5, 0xed, 0x7e, 0x49, 0x7d, 0x66, 0xc0, 0xf4, 0x29, 0xac, 0x9b, 0x31, 0x77, 0x8d,
0x0d, 0x4d, 0xb5, 0xe4, 0xd2, 0x6a, 0xa1, 0x1d, 0xb0, 0x5f, 0x30, 0x47, 0x5d, 0x75, 0xd8, 0xad,
0x26, 0x45, 0x5a, 0x52, 0x26, 0x4f, 0x83, 0x48, 0x1a, 0x13, 0xf5, 0xad, 0x74, 0xcf, 0x82, 0x50,
0x22, 0xe3, 0x2a, 0xc3, 0x6f, 0xea, 0x40, 0x6d, 0x2f, 0xe8, 0x8b, 0xae, 0xe4, 0x32, 0x99, 0x44,
0xf7, 0xd1, 0x35, 0x3a, 0xac, 0xb4, 0xaa, 0xe9, 0xc1, 0x5e, 0x30, 0x87, 0xe1, 0xa6, 0x6a, 0xc0,
0x2b, 0x03, 0x33, 0x94, 0x50, 0xa0, 0x3f, 0x59, 0x00, 0xc6, 0xd7, 0x28, 0xba, 0xda, 0xcb, 0xfb,
0x99, 0x3b, 0x75, 0x76, 0x58, 0x25, 0x4b, 0x2c, 0x73, 0xf3, 0x6e, 0x9a, 0xd9, 0xa4, 0xa3, 0x5e,
0x4b, 0xf1, 0xb1, 0x5e, 0x9f, 0x9f, 0x53, 0x0f, 0xaa, 0x3b, 0xde, 0x28, 0x92, 0x22, 0xd4, 0x74,
0x12, 0xce, 0x56, 0x86, 0x33, 0xd9, 0x80, 0x25, 0xa4, 0x2c, 0xa4, 0x1e, 0x01, 0x53, 0x44, 0xcd,
0x2a, 0x3e, 0x1d, 0x62, 0x7f, 0x4e, 0x3b, 0x79, 0xb6, 0x19, 0x05, 0xed, 0x42, 0x61, 0x71, 0x5f,
0x13, 0xc8, 0xe3, 0x63, 0x4f, 0xa7, 0x02, 0xdf, 0x79, 0x35, 0xb0, 0x77, 0xdd, 0xb8, 0x76, 0x6c,
0xa6, 0x3e, 0x51, 0xc3, 0xcf, 0xb1, 0xb6, 0x95, 0x86, 0xab, 0x6b, 0xee, 0x6e, 0x5c, 0x2b, 0x6a,
0x2e, 0xdf, 0xe4, 0x42, 0x32, 0xef, 0x25, 0x3b, 0xf3, 0x5e, 0xfa, 0x25, 0x07, 0x77, 0x99, 0x88,
0xdc, 0x57, 0xc2, 0xf1, 0x23, 0x19, 0x8e, 0x92, 0x3e, 0xff, 0x2c, 0x38, 0x74, 0xda, 0xe8, 0xd5,
0x66, 0xb1, 0x60, 0x32, 0x98, 0x5b, 0x98, 0xc1, 0x77, 0xd5, 0x0b, 0x3b, 0x08, 0xfb, 0xaa, 0xd9,
0x83, 0x50, 0xe7, 0x64, 0x0a, 0x98, 0x45, 0x90, 0xf7, 0x60, 0xa9, 0x1b, 0x8c, 0xc2, 0x5e, 0x72,
0x13, 0xac, 0xa4, 0xe0, 0x98, 0x55, 0xbc, 0xcc, 0x0c, 0x2c, 0x93, 0xf1, 0xc2, 0xe5, 0x19, 0x27,
0x8f, 0xa6, 0x32, 0x8e, 0x6f, 0xdf, 0x4a, 0xeb, 0x8d, 0xd4, 0x60, 0x62, 0x99, 0x4d, 0xa2, 0xe9,
0x0f, 0x16, 0xdc, 0xca, 0x52, 0x78, 0xad, 0x2e, 0x88, 0x53, 0x91, 0x9b, 0x9b, 0x0a, 0x7b, 0x5e,
0x2a, 0xf2, 0x69, 0x2a, 0xd2, 0x67, 0x52, 0x21, 0xf3, 0x4c, 0xa2, 0xc7, 0xb0, 0x3a, 0x93, 0x9f,
0x9d, 0x60, 0x30, 0x54, 0x85, 0x70, 0xd3, 0x3c, 0x2d, 0x43, 0xa1, 0x13, 0x86, 0x3a, 0x43, 0x65,
0x16, 0x0b, 0xf4, 0x2b, 0xb8, 0xd7, 0x15, 0x32, 0x93, 0x9e, 0x4c, 0xff, 0xef, 0x7b, 0xfd, 0x05,
0x27, 0xdf, 0xf7, 0xfa, 0x0a, 0xb0, 0x27, 0xce, 0x16, 0x6c, 0xb8, 0x27, 0xce, 0xe8, 0x73, 0x28,
0x1d, 0x04, 0xc3, 0xc0, 0x0b, 0x8e, 0xc6, 0xd9, 0x16, 0xb3, 0x5e, 0xbf, 0xc5, 0x72, 0x53, 0x2d,
0xf6, 0xb8, 0xf6, 0xfb, 0x45, 0xc3, 0xfa, 0xe3, 0xa2, 0x61, 0xfd, 0x79, 0xd1, 0xb0, 0x7e, 0xfd,
0xab, 0xf1, 0xbf, 0xc3, 0x22, 0xfe, 0xfd, 0x3d, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x4f,
0x86, 0xdb, 0x0e, 0x0e, 0x00, 0x00,
// 1229 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
0x14, 0x67, 0xbd, 0xb6, 0x63, 0x3f, 0xc7, 0x8d, 0x33, 0xa4, 0xc1, 0x89, 0x22, 0xd7, 0xcc, 0x81,
0x84, 0x4a, 0x04, 0x70, 0x25, 0x04, 0x41, 0x95, 0xa0, 0xb1, 0xab, 0x2e, 0x90, 0xa4, 0x1d, 0xa7,
0x45, 0x70, 0x40, 0x9a, 0xd8, 0x43, 0xb2, 0xca, 0x7a, 0xd7, 0xec, 0x8e, 0x93, 0xb8, 0x07, 0x6e,
0x70, 0x80, 0x3b, 0xe2, 0xce, 0x97, 0xe1, 0xc8, 0x47, 0x40, 0xe1, 0x43, 0x20, 0x71, 0x01, 0xcd,
0xbf, 0xdd, 0xf5, 0xda, 0x4e, 0x9a, 0x88, 0xdb, 0xbe, 0x37, 0xbf, 0xf7, 0xe6, 0x37, 0xef, 0xdf,
0xcc, 0x42, 0x75, 0x18, 0xba, 0x67, 0x94, 0xb3, 0xed, 0x61, 0x18, 0xf0, 0x00, 0x95, 0x5c, 0x9f,
0xb3, 0xd0, 0xa7, 0x1e, 0x3e, 0x80, 0xb2, 0xe3, 0xf7, 0xd9, 0xc5, 0x1e, 0xe3, 0x14, 0x35, 0xa1,
0xb2, 0x1b, 0x78, 0xa3, 0x81, 0xff, 0x05, 0x3d, 0x62, 0x5e, 0xdd, 0x6a, 0x5a, 0x5b, 0x65, 0x92,
0x56, 0x09, 0xc4, 0xa1, 0x3b, 0x60, 0xcf, 0x46, 0xd4, 0xe7, 0xa3, 0x41, 0x3d, 0xa7, 0x10, 0x29,
0x15, 0xfe, 0xc7, 0x82, 0xf2, 0xe3, 0x90, 0x0e, 0x98, 0xf4, 0xb8, 0x0e, 0x25, 0x12, 0x9c, 0xa7,
0xdd, 0xc5, 0x32, 0x7a, 0x0b, 0xee, 0x38, 0xfe, 0x19, 0x0b, 0x23, 0xd6, 0xf1, 0xe9, 0x91, 0xc7,
0xfa, 0xd2, 0x5d, 0x89, 0x64, 0xb4, 0x68, 0x03, 0xca, 0xbb, 0xb4, 0x77, 0xc2, 0x0e, 0xc7, 0x43,
0x56, 0xb7, 0xa5, 0x93, 0x44, 0x11, 0xaf, 0x76, 0xdd, 0x97, 0xac, 0x9e, 0x6f, 0x5a, 0x5b, 0x55,
0x92, 0x28, 0xb2, 0x7c, 0x0b, 0x53, 0x7c, 0x11, 0x86, 0x45, 0x42, 0xfd, 0xe3, 0x98, 0x43, 0x51,
0x72, 0x98, 0xd0, 0xa1, 0x4d, 0x28, 0x3e, 0x76, 0x99, 0xd7, 0x8f, 0xea, 0x0b, 0x4d, 0x7b, 0xab,
0xd2, 0x5a, 0xda, 0x36, 0xf1, 0xdb, 0x96, 0x7a, 0xa2, 0x97, 0x31, 0x86, 0x3b, 0xce, 0x60, 0x18,
0x84, 0x9c, 0xb0, 0x68, 0x18, 0xf8, 0x11, 0x43, 0x35, 0xb0, 0x3b, 0x61, 0xa8, 0xcf, 0x2e, 0x3e,
0xf1, 0xf7, 0x50, 0x7b, 0xe4, 0x05, 0xbd, 0xd3, 0x36, 0xe5, 0x94, 0xb0, 0xef, 0x46, 0x2c, 0xe2,
0x68, 0x05, 0x0a, 0x32, 0x0b, 0x1a, 0xa7, 0x04, 0xa1, 0x95, 0x91, 0xd4, 0x61, 0x56, 0x82, 0xd0,
0x4a, 0x7b, 0x19, 0x8a, 0x3c, 0x51, 0x82, 0xd0, 0x76, 0x3d, 0xb7, 0xa7, 0x42, 0x90, 0x27, 0x4a,
0x40, 0x08, 0xf2, 0x2f, 0x5c, 0x76, 0xae, 0xcf, 0x2d, 0xbf, 0xb1, 0x03, 0xcb, 0xa9, 0xfd, 0x35,
0xcd, 0x55, 0x28, 0x92, 0xe0, 0xdc, 0x69, 0x47, 0x75, 0xab, 0x69, 0x6f, 0xe5, 0x89, 0x96, 0x64,
0x74, 0x65, 0xfa, 0xc5, 0x52, 0x4e, 0x2e, 0x25, 0x0a, 0xbc, 0x06, 0x05, 0x19, 0x6a, 0x71, 0xca,
0xc4, 0x56, 0x7c, 0xe2, 0x7f, 0x2d, 0x28, 0xef, 0xd1, 0x0b, 0x49, 0x23, 0x42, 0x0f, 0xa1, 0xd4,
0xe5, 0xd4, 0xef, 0xd3, 0xb0, 0x2f, 0x41, 0x95, 0xd6, 0x9b, 0x49, 0x08, 0x63, 0xd8, 0xb6, 0xc1,
0x74, 0x7c, 0x1e, 0x8e, 0x49, 0x6c, 0x82, 0x76, 0x60, 0x41, 0xd7, 0x84, 0xe4, 0x50, 0x69, 0x35,
0x67, 0x59, 0xc7, 0x65, 0x23, 0x8c, 0x8d, 0xc1, 0xfa, 0xc7, 0x50, 0x9d, 0x70, 0x2b, 0xb8, 0x9e,
0xb2, 0xb1, 0xc9, 0xc8, 0x29, 0x1b, 0x8b, 0xd8, 0x9d, 0x51, 0x6f, 0xa4, 0xe2, 0x9c, 0x27, 0x4a,
0xd8, 0xc9, 0x7d, 0x68, 0xad, 0xef, 0xc0, 0x62, 0xda, 0xeb, 0x4d, 0x6c, 0xf1, 0x37, 0x80, 0x76,
0x43, 0x46, 0x39, 0x93, 0xf4, 0xf6, 0x58, 0x14, 0xd1, 0x63, 0x36, 0x3f, 0xd3, 0x2a, 0x7b, 0xb9,
0x74, 0xf6, 0x36, 0xa0, 0xec, 0x44, 0xe6, 0xe0, 0xb6, 0xac, 0xcb, 0x44, 0x81, 0xef, 0x03, 0x6a,
0x33, 0x8f, 0x71, 0xa6, 0xfb, 0xf7, 0x0a, 0xff, 0xb8, 0x6b, 0xb8, 0x5c, 0x8f, 0x45, 0x9b, 0x90,
0x17, 0xad, 0x2b, 0xa9, 0x54, 0x5a, 0xaf, 0x27, 0x91, 0x8e, 0xe7, 0x04, 0x91, 0x00, 0xec, 0x1a,
0xa7, 0xba, 0xdd, 0xaf, 0x39, 0xe0, 0x8c, 0x52, 0x36, 0x5b, 0xd9, 0xd9, 0xad, 0xe2, 0x01, 0xa2,
0xb7, 0xfa, 0xc4, 0x9c, 0xf5, 0xb6, 0x5b, 0xe1, 0xaf, 0xb5, 0x56, 0xb4, 0xc4, 0xbe, 0x58, 0x55,
0x36, 0xf2, 0x7b, 0xfe, 0x91, 0x33, 0x3c, 0x84, 0x6f, 0xd1, 0x43, 0x51, 0xdd, 0x6e, 0xda, 0xc2,
0xb7, 0x14, 0xf0, 0x03, 0x28, 0x76, 0x7b, 0x27, 0x6c, 0x40, 0xd1, 0xdb, 0xa2, 0x50, 0xfb, 0xec,
0x82, 0x45, 0xba, 0xcc, 0x97, 0x32, 0xe1, 0x23, 0x66, 0x1d, 0xff, 0x6c, 0x69, 0xf6, 0x73, 0x18,
0x15, 0xe5, 0xde, 0x51, 0x3d, 0x3f, 0x35, 0x71, 0x84, 0x9e, 0xe8, 0x65, 0xd4, 0x81, 0x9a, 0xe3,
0x0f, 0x47, 0xbc, 0xcd, 0xbe, 0x75, 0x7d, 0x97, 0xbb, 0x81, 0x1f, 0xd5, 0x8b, 0xd2, 0x64, 0x2d,
0xbd, 0xf5, 0x04, 0x82, 0x4c, 0x99, 0xe0, 0x1f, 0x2d, 0x58, 0xca, 0x28, 0xaf, 0xe1, 0x95, 0xbb,
0x9a, 0xd7, 0x07, 0xf1, 0xc8, 0xb4, 0x25, 0xb0, 0x31, 0x97, 0xcd, 0xe4, 0x04, 0xfd, 0xcd, 0x82,
0x95, 0x59, 0x80, 0x99, 0x6c, 0x1a, 0x00, 0x4f, 0x43, 0x77, 0x40, 0xc3, 0xf1, 0xe7, 0x6c, 0xac,
0x6f, 0x8f, 0x94, 0x06, 0x7d, 0x09, 0xab, 0x19, 0x5f, 0x9f, 0xf6, 0x54, 0x88, 0x14, 0xa9, 0x7b,
0x73, 0x49, 0x29, 0x1c, 0x99, 0x63, 0x8e, 0xff, 0xb6, 0xe0, 0xee, 0xcc, 0xa5, 0xa4, 0xfa, 0xac,
0x74, 0xa1, 0xdf, 0x87, 0xda, 0x0b, 0x31, 0x18, 0xda, 0x2c, 0xe2, 0xae, 0x4f, 0x05, 0x52, 0x97,
0xe7, 0x94, 0x1e, 0x39, 0x50, 0x92, 0xba, 0x3d, 0x3a, 0xd4, 0x34, 0xdf, 0xb9, 0x86, 0xe6, 0xb6,
0xc1, 0xeb, 0xb9, 0x69, 0x44, 0x41, 0x46, 0xce, 0x71, 0x73, 0x29, 0x48, 0x41, 0x4c, 0xc4, 0x09,
0x83, 0x1b, 0x4d, 0xb5, 0x00, 0x36, 0xcc, 0x24, 0x99, 0x60, 0x72, 0x75, 0x4f, 0x7e, 0x04, 0x90,
0x40, 0x75, 0xbb, 0x5f, 0x51, 0x9f, 0x29, 0x30, 0x7e, 0x02, 0x1b, 0x66, 0xcc, 0xdd, 0x60, 0x43,
0x53, 0x2d, 0xb9, 0xa4, 0x5a, 0x70, 0x07, 0xec, 0xe7, 0xc4, 0x11, 0x57, 0x9d, 0xec, 0x56, 0x93,
0x22, 0x2d, 0x09, 0x93, 0x27, 0x41, 0xc4, 0x8d, 0x89, 0xf8, 0x16, 0xba, 0xa7, 0x41, 0xc8, 0x25,
0xe3, 0x2a, 0x91, 0xdf, 0xd8, 0x81, 0xda, 0x7e, 0xd0, 0x67, 0x5d, 0x4e, 0x79, 0x3c, 0x89, 0xee,
0x49, 0xd7, 0xd2, 0x61, 0xa5, 0x55, 0x4d, 0x0e, 0xf6, 0x9c, 0x38, 0x44, 0x6e, 0x2a, 0x06, 0xbc,
0x30, 0x30, 0x43, 0x49, 0x0a, 0xf8, 0x27, 0x0b, 0xc0, 0xf8, 0x1a, 0x45, 0xd7, 0x7b, 0x79, 0x3f,
0x75, 0xa7, 0x4e, 0x0f, 0xab, 0x78, 0x89, 0xa4, 0x6e, 0xde, 0x2d, 0x33, 0x9b, 0x74, 0xd4, 0x6b,
0x09, 0x5e, 0xe9, 0xf5, 0xf9, 0x29, 0xf6, 0xa0, 0xba, 0xeb, 0x8d, 0x22, 0xce, 0x42, 0x4d, 0x27,
0xe6, 0x6c, 0xa5, 0x38, 0xa3, 0x4d, 0x58, 0x90, 0x94, 0x19, 0xd7, 0x23, 0x20, 0x43, 0xd4, 0xac,
0xca, 0xa7, 0x83, 0xf2, 0xe7, 0xb4, 0xe3, 0x67, 0x9b, 0x51, 0xe0, 0x2e, 0x14, 0xe6, 0xf7, 0x35,
0x82, 0xbc, 0x7c, 0xec, 0xe9, 0x54, 0xc8, 0x77, 0x5e, 0x0d, 0xec, 0x3d, 0x57, 0xd5, 0x8e, 0x4d,
0xc4, 0xa7, 0xd4, 0xd0, 0x0b, 0x59, 0xdb, 0x42, 0x43, 0xc5, 0x35, 0xb7, 0xac, 0x8a, 0x53, 0xcc,
0xe5, 0xdb, 0x5c, 0x48, 0xe6, 0xbd, 0x64, 0xa7, 0xde, 0x4b, 0x5d, 0x58, 0x56, 0x05, 0xf8, 0x7f,
0x3a, 0xfd, 0x25, 0x07, 0xcb, 0x84, 0x45, 0xee, 0x4b, 0xe6, 0xf8, 0x11, 0x0f, 0x47, 0xf1, 0xf0,
0xf8, 0x2c, 0x38, 0x72, 0xda, 0xd2, 0xab, 0x4d, 0x94, 0x60, 0xca, 0x22, 0x37, 0xb7, 0x2c, 0xde,
0x15, 0xcf, 0xf6, 0x20, 0xec, 0x8b, 0x09, 0x12, 0x84, 0x3a, 0xd1, 0x19, 0x60, 0x1a, 0x81, 0xde,
0x83, 0x85, 0x6e, 0x30, 0x0a, 0x7b, 0xf1, 0xf5, 0xb2, 0x9a, 0x80, 0x15, 0x2b, 0xb5, 0x4c, 0x0c,
0x2c, 0x55, 0x46, 0x85, 0xab, 0xcb, 0x08, 0x3d, 0xcc, 0x94, 0x91, 0x7c, 0x50, 0x57, 0x5a, 0x6f,
0x24, 0x06, 0x13, 0xcb, 0x64, 0x12, 0x8d, 0x7f, 0xb0, 0x60, 0x31, 0x4d, 0xe1, 0x95, 0x5a, 0x4b,
0xa5, 0x22, 0x37, 0x33, 0x15, 0xf6, 0xac, 0x54, 0xe4, 0x93, 0x54, 0x24, 0x6f, 0xaf, 0x42, 0xea,
0xed, 0x85, 0x4f, 0x60, 0x6d, 0x2a, 0x3f, 0xbb, 0xc1, 0x60, 0x28, 0x0a, 0xe1, 0xb6, 0x79, 0x5a,
0x81, 0x42, 0x27, 0x0c, 0x75, 0x86, 0xca, 0x44, 0x09, 0xf8, 0x2b, 0xb8, 0xdb, 0x65, 0x3c, 0x95,
0x9e, 0xd4, 0x50, 0x39, 0xf0, 0xfa, 0x73, 0x4e, 0x7e, 0xe0, 0xf5, 0x05, 0x60, 0x9f, 0x9d, 0xcf,
0xd9, 0x70, 0x9f, 0x9d, 0xe3, 0x67, 0x50, 0x3a, 0x0c, 0x86, 0x81, 0x17, 0x1c, 0x8f, 0xd3, 0x7d,
0x6b, 0xbd, 0x7a, 0xdf, 0xe6, 0x32, 0x7d, 0xfb, 0xa8, 0xf6, 0xfb, 0x65, 0xc3, 0xfa, 0xe3, 0xb2,
0x61, 0xfd, 0x79, 0xd9, 0xb0, 0x7e, 0xfd, 0xab, 0xf1, 0xda, 0x51, 0x51, 0xfe, 0x52, 0x3e, 0xf8,
0x2f, 0x00, 0x00, 0xff, 0xff, 0x59, 0x94, 0x30, 0x6d, 0x63, 0x0e, 0x00, 0x00,
}

View file

@ -145,6 +145,12 @@ message Field {
int64 Max = 4;
}
message CreateViewMessage {
string Index = 1;
string Frame = 2;
string View = 3;
}
message DeleteViewMessage {
string Index = 1;
string Frame = 2;

View file

@ -408,6 +408,15 @@ func (s *Server) ReceiveMessage(pb proto.Message) error {
if err != nil {
return err
}
case *internal.CreateViewMessage:
f := s.Holder.Frame(obj.Index, obj.Frame)
if f == nil {
return fmt.Errorf("Local Frame not found: %s", obj.Frame)
}
_, err := f.CreateViewIfNotExistsBase(obj.View)
if err != nil {
return err
}
case *internal.DeleteViewMessage:
f := s.Holder.Frame(obj.Index, obj.Frame)
if f == nil {