fix(bridge): release command service registration ownership
Publish UPM package / publish (push) Successful in 2s
Publish NuGet packages / publish (push) Successful in 4m53s

This commit is contained in:
2026-09-29 10:14:40 +08:00
parent af97af183b
commit b1c42ea4ab
4 changed files with 23 additions and 13 deletions
@@ -5,16 +5,16 @@
<AssemblyName>ShrinkCommand.Integration.Network</AssemblyName>
<RootNamespace>ShrinkCommand.Integration</RootNamespace>
<PackageId>ShrinkSDK.Command.Integration.Network</PackageId>
<Version>0.2.0</Version>
<Version>0.2.5</Version>
<Description>ShrinkCommand and Network RPC integration.</Description>
<ShrinkCodeGenEnabled>true</ShrinkCodeGenEnabled>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\*.cs" />
<PackageReference Include="ShrinkSDK.Runtime.Abstractions" Version="0.1.0" />
<PackageReference Include="ShrinkSDK.Context.Core" Version="0.2.0" />
<PackageReference Include="ShrinkSDK.Command" Version="0.3.0" />
<PackageReference Include="ShrinkSDK.Network" Version="0.3.0" />
<PackageReference Include="ShrinkSDK.CodeGen" Version="0.1.0" PrivateAssets="compile;runtime;contentfiles;native" />
<PackageReference Include="ShrinkSDK.Context.Core" Version="0.3.0" />
<PackageReference Include="ShrinkSDK.Command" Version="0.4.2" />
<PackageReference Include="ShrinkSDK.Network" Version="0.4.2" />
<PackageReference Include="ShrinkSDK.CodeGen" Version="0.2.0" PrivateAssets="compile;runtime;contentfiles;native" />
</ItemGroup>
</Project>
+10
View File
@@ -24,3 +24,13 @@ networkService.UseCommandBridge(commandService);
```csharp
var response = await session.ExecuteCommandAsync("help");
```
## 可复用能力
<!-- shrink:capabilities -->
Capability: 通过 RPC 执行命令,将远端会话映射为命令来源
Aliases: 远程命令 rpc command 控制台
Limits: 仍需校验来源和权限;不能将任意 RPC 当作管理员授权
Extension: 桥接配置与会话来源映射
Evidence: [ShrinkNetworkCommandBridge](ShrinkNetworkCommandBridge.cs)
<!-- /shrink:capabilities -->
+4 -4
View File
@@ -1,7 +1,7 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using Cysharp.Threading.Tasks;
using ShrinkNetwork;
@@ -12,7 +12,7 @@ namespace ShrinkCommand.Integration
public const string ExecuteRoute = "command/execute";
private static readonly object SyncRoot = new();
private static readonly HashSet<ShrinkNetworkService> RegisteredServices = new();
private static readonly ConditionalWeakTable<ShrinkNetworkService, object> RegisteredServices = new();
public static void RegisterService(
ShrinkNetworkService networkService,
@@ -26,9 +26,9 @@ namespace ShrinkCommand.Integration
lock (SyncRoot)
{
if (RegisteredServices.Contains(networkService))
if (RegisteredServices.TryGetValue(networkService, out _))
return;
RegisteredServices.Add(networkService);
RegisteredServices.Add(networkService, new object());
}
options ??= new ShrinkNetworkCommandBridgeOptions();
+4 -4
View File
@@ -1,13 +1,13 @@
{
"name": "com.cneicy.shrink-command-integration-network",
"version": "0.2.0",
"version": "0.2.5",
"displayName": "ShrinkCommand - Network Integration",
"description": "ShrinkCommand 与 ShrinkNetwork 的桥接层,允许远程会话通过 RPC 执行命令。",
"unity": "2022.3",
"dependencies": {
"com.cneicy.shrink-command": "0.3.0",
"com.cneicy.shrink-network": "0.3.0",
"com.cneicy.shrink-context-core": "0.2.0"
"com.cneicy.shrink-command": "0.4.2",
"com.cneicy.shrink-network": "0.4.2",
"com.cneicy.shrink-context-core": "0.3.0"
},
"keywords": [
"command",