<html>
  <body>
    <p>
      Connections are the primary unit of resource management.
      Sessions and Links are components of connections. When the
      Connection is freed/discarded, any resources associated with
      the Sessions and Links are automatically destroyed or discarded
      as well.
    </p>

    <p>
      Each of the Connection, Session, and Link endpoints share a
      common state model. Note that although this follows the same
      pattern as the protocol state model for open/close, begin/end,
      and attach/detach, this does not necessarily correspond one to
      one to the protocol state model for endpoints. For example the
      engine implementation may detach/reattach a link endpoint
      without visibly changing the external state.
    </p>

    <p>
      The state of each endpoint is divided into two parts, one
      reflecting the state of the local endpoint, and the other
      reflecting the state of the remote endpoint as last
      communicated.
    </p>

    <pre>
     LOCAL:
       UNINIT
       ACTIVE
       CLOSED

     REMOTE:
       UNINIT
       ACTIVE
       CLOSED
    </pre>

    <p>In total there are 9 possible states:</p>

    <pre>
     LOCAL             REMOTE             Example
     -------------------------------------------------------------------------
     UNINIT            UNINIT             A newly created connection.

     UNINIT            ACTIVE             A remotely initiated connection
                                          prior to full establishment.

     UNINIT            CLOSED             A remotely initiated connection that
                                          has been closed prior to full
                                          establishment.

     ACTIVE            UNINIT             A locally initiated connection prior
                                          to full establishment.

     ACTIVE            ACTIVE             A fully established connection.

     ACTIVE            CLOSED             A remotely terminated connection.

     CLOSED            UNINIT             A locally initiated connection that
                                          has been closed prior to full
                                          establishment.

     CLOSED            ACTIVE             A locally terminated connection.

     CLOSED            CLOSED             A fully terminated connection.
  </pre>

  <p>
    Additionally each endpoint has an error slot which may be filled
    with additional information regarding error conditions, e.g. why
    the remote endpoint was transitioned to CLOSED.
  </p>

  <h3>Questions:</h3>

  <ul>
    <li>The transfer buffer class may not necessarily be explicitly part
      of the external interface, e.g. it could be absorbed into the
      session interface.</li>
    <li>how do we confirm acheiving active/active without iterating
      over all active/active endpoints?
      <ul>
        <li>add an ignore/interest flag as part of generic endpoint state?</li>
        <li>add pending state to local state?</li>
      </ul>
    </li>
    <li>what are credits exactly?
      <ul>
        <li>how does synchronous get work?
          <ul><li>implies credit unit needs to be messages?</li></ul>
        <li>credits may not correspond exactly with on-the-wire credits due
          to local buffering</li>
      </ul>
    </li>
    <li>how would 0-x impls work given that we're passing bytes directly to send?
      <ul>
        <li>have a generic property get/set API?
          <ul><li>this could address per transfer flags as well</li></ul>
        </li>
      </ul>
    </li>
    <li>how do large messages work?
      <ul><li>does send need a done flag for multiple transfers?</li></ul>
    </li>
    <li>how does resume work?</li>
    <li>how does abort work?</li>
    <li>how do we send settled?
      <ul>
        <li>just call settle on the returned transfer, the engine MUST optimize</li>
      </ul>
    </li>
    <li>
      how do we deal with send and receive modes on individual transfers?
      <ul><li>could just twiddle the link ones and set them on the
          transfer frame if they differ from what they were when the
          attach was made</li></ul>
    </li>
  </ul>
  </body>
</html>
