|
52 | 52 | * <li><b>Resubscription:</b> Resume receiving events for ongoing tasks after disconnection</li> |
53 | 53 | * </ul> |
54 | 54 | * <p> |
55 | | - * <b>Creating a client:</b> Use {@link #builder(AgentCard)} to create instances: |
| 55 | + * <b>Resource management:</b> Client implements {@link AutoCloseable} and should be used with |
| 56 | + * try-with-resources to ensure proper cleanup: |
56 | 57 | * <pre>{@code |
57 | | - * // 1. Get agent card |
58 | 58 | * AgentCard card = A2A.getAgentCard("http://localhost:9999"); |
59 | 59 | * |
60 | | - * // 2. Build and configure client |
| 60 | + * try (Client client = Client.builder(card) |
| 61 | + * .withTransport(JSONRPCTransport.class, new JSONRPCTransportConfigBuilder()) |
| 62 | + * .addConsumer((event, agentCard) -> { |
| 63 | + * if (event instanceof MessageEvent me) { |
| 64 | + * System.out.println("Response: " + me.getMessage().parts()); |
| 65 | + * } |
| 66 | + * }) |
| 67 | + * .build()) { |
| 68 | + * |
| 69 | + * // Send messages - client automatically closed when done |
| 70 | + * client.sendMessage(A2A.toUserMessage("Tell me a joke")); |
| 71 | + * } |
| 72 | + * }</pre> |
| 73 | + * <p> |
| 74 | + * <b>Manual resource management:</b> If not using try-with-resources, call {@link #close()} |
| 75 | + * explicitly when done: |
| 76 | + * <pre>{@code |
61 | 77 | * Client client = Client.builder(card) |
62 | 78 | * .withTransport(JSONRPCTransport.class, new JSONRPCTransportConfigBuilder()) |
63 | 79 | * .addConsumer((event, agentCard) -> { |
64 | | - * if (event instanceof MessageEvent me) { |
65 | | - * Message msg = me.getMessage(); |
66 | | - * System.out.println("Agent response: " + msg.parts()); |
67 | | - * } else if (event instanceof TaskUpdateEvent tue) { |
68 | | - * Task task = tue.getTask(); |
69 | | - * System.out.println("Task " + task.id() + " is " + task.status().state()); |
70 | | - * } |
| 80 | + * // Handle events |
71 | 81 | * }) |
72 | 82 | * .build(); |
73 | 83 | * |
74 | | - * // 3. Send messages |
75 | | - * client.sendMessage(A2A.toUserMessage("Tell me a joke")); |
76 | | - * |
77 | | - * // 4. Clean up when done |
78 | | - * client.close(); |
| 84 | + * try { |
| 85 | + * client.sendMessage(A2A.toUserMessage("Tell me a joke")); |
| 86 | + * } finally { |
| 87 | + * client.close(); // Always close to release resources |
| 88 | + * } |
79 | 89 | * }</pre> |
80 | 90 | * <p> |
81 | 91 | * <b>Event consumption model:</b> Responses from the agent are delivered as {@link ClientEvent} |
|
0 commit comments