// 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 }