blob: c059635cd178621646b8ee1788eb8f7a7c2e18c5 [file] [log] [blame]
// 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
}