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

// 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."}
)
