Parcourir la source

feat(stdlib): 完善 GA,增加 GA 同步功能,增加 API

利用 sync 模块的反馈,可以及时校准 GA 数据。

增加了 ga.ThisCmd 和 ga.IsUnderway
dzp il y a 2 ans
Parent
commit
b6de1fe1fd
2 fichiers modifiés avec 31 ajouts et 0 suppressions
  1. 4 0
      mud/pkuxkx/plugins/lib/sync.tin
  2. 27 0
      plugins/lib/ga.tin

+ 4 - 0
mud/pkuxkx/plugins/lib/sync.tin

@@ -109,10 +109,14 @@ PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 #nop 根据服务器返回的信息,调用相应的回调代码。;
 #action {^系统回馈:R:sync-%*$E} {
     #local uuid {%1};
+
+    ga.Confirm {response R:sync-$uuid};
+
     #local callback {$gSyncHandlers[$uuid]};
     #unvar {gSyncHandlers[$uuid]};
     #if { {$callback} != {} } {
         $callback;
     };
+
     #line gag;
 };

+ 27 - 0
plugins/lib/ga.tin

@@ -52,6 +52,8 @@ event.Define {GA} {有参} {$MODULE} {接收到 IAC GA 时发射本事件,参
     #local line {%0};
     #replace line {{$TELNET[GA]|$TELNET[EOR]}$} {};
 
+    #local cmd {};
+
     #if { &gXttPipeLine[] > 0 } {
         #local cmd {$gXttPipeLine[1]};
         #list gXttPipeLine delete {1};
@@ -72,3 +74,28 @@ event.Define {GA} {有参} {$MODULE} {接收到 IAC GA 时发射本事件,参
     #send {$TELNET[IAC]$TELNET[WILL]$TELNET[LINEMODE]\};
     #send {$TELNET[IAC]$TELNET[DONT]$TELNET[SGA]\};
 };
+
+#alias {ga.Sync} {
+    sync.Wait {#0};
+};
+
+#alias {ga.Confirm} {
+    #local cmd {%1};
+
+    #while { &gXttPipeLine[] > 0 && {$gXttPipeLine[1]} !== {$cmd} } {
+        #list gXttPipeLine delete {1};
+    };
+};
+
+#func {ga.ThisCmd} {
+    #return {$gXttPipeLine[1]};
+};
+
+#func {ga.IsUnderway} {
+    #if { &gXttPipeLine[] > 1 } {
+        #return 1;
+    };
+    #else {
+        #return 0;
+    };
+};