1: <?php
2:
3: declare(strict_types=1);
4:
5: /**
6: * This file is part of the Nexus MCP SDK package.
7: *
8: * (c) 2026 John Paul E. Balandan, CPA <paulbalandan@gmail.com>
9: *
10: * For the full copyright and license information, please view
11: * the LICENSE file that was distributed with this source code.
12: */
13:
14: namespace Nexus\Mcp\Core\Transport;
15:
16: use Nexus\Mcp\Core\Schema\RequestId;
17:
18: /**
19: * A transport whose in-flight work can be stopped one request at a time, rather than only wholesale by
20: * `close()`. The inbound counterpart is `CancellableTransportInterface`, which reports a peer abandoning
21: * a request the caller is serving.
22: */
23: interface AbortableTransportInterface extends TransportInterface
24: {
25: /**
26: * Stops whatever this transport still has in flight for `$id` and releases it. Naming a request that
27: * was never sent, already answered, or already aborted does nothing.
28: *
29: * The caller has given up on the response, so the abort is not reported as a fault: nothing reaches
30: * `onError()` and no reply arrives for that id afterwards. Telling the peer is the protocol layer's
31: * job, through `notifications/cancelled`.
32: */
33: public function abort(RequestId $id): void;
34: }
35: