// 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."}
  RemoteError(msg string) {"en": "remote end received err{:msg}."}
  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(err error) {"en": "The blessings flow was closed with error{:err}."}
  InvalidChannelBinding() {"en": "The channel binding was invalid."}
  NoPublicKey() {"en": "No public key was received by the remote end."}
  DialingNonServer(ep string) {"en": "You are attempting to dial on a connection with no remote server: {:ep}."}
  AcceptorBlessingsMissing() {"en": "The acceptor did not send blessings."}
  DialerBlessingsMissing() {"en": "The dialer did not send blessings."}
  BlessingsNotBound() {"en": "blessings not bound to connection remote public key"}
  InvalidPeerFlow() {"en": "peer has chosen flow id from local domain."}
  ChannelTimeout() {"en": "the channel has become unresponsive."}
  CannotDecryptBlessings(err error) {"en": "cannot decrypt the encrypted blessings sent by peer{:err}"}
  CannotDecryptDischarges(err error) {"en": "cannot decrypt the encrypted discharges sent by peer{:err}"}
  CannotEncryptBlessings(peers []security.BlessingPattern, err error) {"en": "cannot encyrpt blessings for peer {peers}{:err}"}
  CannotEncryptDischarges(peers []security.BlessingPattern, err error) {"en": "cannot encrypt discharges for peers {peers}{:err}"}
  NoCrypter() {"en": "no blessings-based crypter available"}
  NoPrivateKey() {"en": "no blessings private key available for decryption"}
  IdleConnKilled() {"en": "Connection killed because idle expiry was reached."}
)
