// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package conn

import "v.io/v23/security"

// These messages are constructed so as to avoid embedding a component/method name
// and are thus more suitable for inclusion in other verrors.
// This practice of omitting {1}{2} should be used throughout the flow implementations
// since all of their errors are intended to be used as arguments to higher level errors.
// TODO(suharshs,toddw): Allow skipping of {1}{2} in vdl generated errors.
error (
  MissingSetupOption(option string) {
    "en": "missing required setup option{:option}."}
  UnexpectedMsg(typ string) {"en": "unexpected message type{:typ}."}
  ConnectionClosed() {"en": "connection closed."}
  ConnClosedRemotely(msg string) {"en": "connection closed remotely{:msg}."}
  FlowClosedRemotely() {"en": "flow closed remotely."}
  Send(typ, dest string, err error) {"en": "failure sending {typ} message to {dest}{:err}."}
  Recv(src string, err error) {"en": "error reading from {src}{:err}"}
  CounterOverflow() {"en": "A remote process has sent more data than allowed."}
  BlessingsFlowClosed() {"en": "The blessings flow was closed."}
  InvalidChannelBinding() {"en": "The channel binding was invalid."}
  NoPublicKey() {"en": "No public key was received by the remote end."}
  DialingNonServer() {"en": "You are attempting to dial on a connection with no remote server."}
  AcceptorBlessingsMissing() {"en": "The acceptor did not send blessings."}
  UpdatingNilFlowHandler() {"en": "nil flowHandler cannot be updated to non-nil value."}
  BlessingsNotBound() {"en": "blessings not bound to connection remote public key"}
  NoBlessingsForPeer(peerNames []string, rejected []security.RejectedBlessing, err error) {"en": "no blessings tagged for peer {peerNames}, rejected:{rejected}{:err}"}
  InvalidPeerFlow() {"en": "peer has chosen flow id from local domain."}
)
