You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.5 KiB
103 lines
2.5 KiB
// Copyright 2020 Google LLC
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// https://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package bind
|
|
|
|
//Server receives RPC requests
|
|
type Server struct {
|
|
priv PathBinder
|
|
}
|
|
|
|
func NewServer(binder PathBinder) *Server {
|
|
var s Server
|
|
s.priv = binder
|
|
return &s
|
|
}
|
|
|
|
type BindReadOnlyArgs struct {
|
|
Source string
|
|
Destination string
|
|
}
|
|
|
|
type BindReadOnlyReply struct {
|
|
// Errors types cannot be passed as-is in RPC so they
|
|
// must be converted to plain strings.
|
|
// Details at https://github.com/golang/go/issues/23340
|
|
Err string
|
|
}
|
|
|
|
func (s Server) BindReadOnly(args *BindReadOnlyArgs, reply *BindReadOnlyReply) error {
|
|
if err := s.priv.BindReadOnly(args.Source, args.Destination); err != nil {
|
|
reply.Err = err.Error()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type BindReadWriteArgs struct {
|
|
Source string
|
|
Destination string
|
|
}
|
|
|
|
type BindReadWriteReply struct {
|
|
// Errors types cannot be passed as-is in RPC so they
|
|
// must be converted to plain strings.
|
|
// Details at https://github.com/golang/go/issues/23340
|
|
Err string
|
|
}
|
|
|
|
func (s Server) BindReadWrite(args *BindReadWriteArgs, reply *BindReadWriteReply) error {
|
|
if err := s.priv.BindReadWrite(args.Source, args.Destination); err != nil {
|
|
reply.Err = err.Error()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type UnbindArgs struct {
|
|
Destination string
|
|
}
|
|
|
|
type UnbindReply struct {
|
|
// Errors types cannot be passed as-is in RPC so they
|
|
// must be converted to plain strings.
|
|
// Details at https://github.com/golang/go/issues/23340
|
|
Err string
|
|
}
|
|
|
|
func (s Server) Unbind(args *UnbindArgs, reply *UnbindReply) error {
|
|
if err := s.priv.Unbind(args.Destination); err != nil {
|
|
reply.Err = err.Error()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type ListArgs struct {
|
|
}
|
|
|
|
type ListReply struct {
|
|
BindList []string
|
|
// Errors types cannot be passed as-is in RPC so they
|
|
// must be converted to plain strings.
|
|
// Details at https://github.com/golang/go/issues/23340
|
|
Err string
|
|
}
|
|
|
|
func (s Server) List(args *ListArgs, reply *ListReply) error {
|
|
bindList, err := s.priv.List()
|
|
if err != nil {
|
|
reply.Err = err.Error()
|
|
}
|
|
reply.BindList = bindList
|
|
return nil
|
|
}
|