<?xml version="1.0" encoding="UTF-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.1" version="1.1">
  <file original="NoName" source-language="en" datatype="plaintext" target-language="zh_Hans">
    <body>
      <trans-unit xml:space="preserve" approved="no" id="83d9577e443a69f6">
        <source>Teardown</source>
        <target state="needs-translation">Teardown</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">10</context>
        </context-group>
        <note from="developer">type: section title</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="0f6019795a918f94">
        <source>The WebSocket protocol requirements described in rfc6455 section 7.1.1 outline an operation described as [@https://tools.ietf.org/html/rfc6455#section-7.1.1 ['Close the WebSocket Connection]]. This operation cleanly discards bytes remaining at receiving endpoints and also closes the underlying TCP/IP connection. Orderly shutdowns are always preferred; for TLS or SSL streams, a protocol-level shutdown is desired. This presents a small issue for the [link beast.ref.boost__beast__websocket__stream `stream`] implementation: the stream's `NextLayer` template type requires only __SyncStream__ or __AsyncStream__, but those concepts do not support the operations to shut down the connection.</source>
        <target state="needs-translation">The WebSocket protocol requirements described in rfc6455 section 7.1.1 outline an operation described as [@https://tools.ietf.org/html/rfc6455#section-7.1.1 ['Close the WebSocket Connection]]. This operation cleanly discards bytes remaining at receiving endpoints and also closes the underlying TCP/IP connection. Orderly shutdowns are always preferred; for TLS or SSL streams, a protocol-level shutdown is desired. This presents a small issue for the [link beast.ref.boost__beast__websocket__stream `stream`] implementation: the stream's `NextLayer` template type requires only __SyncStream__ or __AsyncStream__, but those concepts do not support the operations to shut down the connection.</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">12</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="176be56a6978b6f1">
        <source>To enable the implementation to perform the shutdown components of the close operation, the library exposes two customization points expressed as free functions associated with the next layer type:</source>
        <target state="needs-translation">To enable the implementation to perform the shutdown components of the close operation, the library exposes two customization points expressed as free functions associated with the next layer type:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">24</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="3da879105b098a14">
        <source>* [link beast.ref.boost__beast__websocket__teardown `teardown`]: Overloads</source>
        <target state="needs-translation">* [link beast.ref.boost__beast__websocket__teardown `teardown`]: Overloads</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">28</context>
        </context-group>
        <note from="developer">type: list</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="68a3d2d1f041b50f">
        <source>* [link beast.ref.boost__beast__websocket__async_teardown `async_teardown`]:</source>
        <target state="needs-translation">* [link beast.ref.boost__beast__websocket__async_teardown `async_teardown`]:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">31</context>
        </context-group>
        <note from="developer">type: list</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="d57e1fa200d71ca9">
        <source>The implementation provides suitable overloads of the teardown customization points when websocket streams are instantiated using the Asio types __socket__ or __ssl_stream__ for the next layer. In this case no user action is required. However, when the websocket stream is instantiated for a user-defined type, compile errors will result if the customization points are not provided for the user defined type. Furthermore, user-defined types that wrap one of the Asio objects mentioned earlier may wish to invoke a teardown customization point for the wrapped object. This is how those tasks are accomplished.</source>
        <target state="needs-translation">The implementation provides suitable overloads of the teardown customization points when websocket streams are instantiated using the Asio types __socket__ or __ssl_stream__ for the next layer. In this case no user action is required. However, when the websocket stream is instantiated for a user-defined type, compile errors will result if the customization points are not provided for the user defined type. Furthermore, user-defined types that wrap one of the Asio objects mentioned earlier may wish to invoke a teardown customization point for the wrapped object. This is how those tasks are accomplished.</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">34</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="271e83888792c7e8">
        <source>User-defined Teardown</source>
        <target state="needs-translation">User-defined Teardown</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">44</context>
        </context-group>
        <note from="developer">type: heading</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="48f76b7805ea54fe">
        <source>To provide overloads of teardown for a user-defined type, simply declare the two free functions with the correct signature, accepting a reference to the user-defined type as the stream parameter:</source>
        <target state="needs-translation">To provide overloads of teardown for a user-defined type, simply declare the two free functions with the correct signature, accepting a reference to the user-defined type as the stream parameter:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">46</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="38f0a1da54cd9617">
        <source>When the implementation invokes the asynchronous teardown function, it always uses an invokable completion handler. It is not necessary to specify the return type customization when creating user-defined overloads of `async_teardown`.</source>
        <target state="needs-translation">When the implementation invokes the asynchronous teardown function, it always uses an invokable completion handler. It is not necessary to specify the return type customization when creating user-defined overloads of `async_teardown`.</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">52</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="b6e3d8cd340aaeff">
        <source>Invoking Teardown</source>
        <target state="needs-translation">Invoking Teardown</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">57</context>
        </context-group>
        <note from="developer">type: heading</note>
      </trans-unit>
      <trans-unit xml:space="preserve" approved="no" id="0d91ee670f8892f9">
        <source>To invoke the customization point, first bring the default implementation into scope with a `using` statement. Then call the customization point without namespace qualification, allowing argument-dependent lookup to take effect:</source>
        <target state="needs-translation">To invoke the customization point, first bring the default implementation into scope with a `using` statement. Then call the customization point without namespace qualification, allowing argument-dependent lookup to take effect:</target>
        <context-group name="" purpose="location">
          <context context-type="sourcefile">59</context>
        </context-group>
        <note from="developer">type: paragraph</note>
      </trans-unit>
    </body>
  </file>
</xliff>
