Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: CIANBASY

CIANBASY.m

Go to the documentation of this file.
  1. CIANBASY ;MSC/IND/DKM - Asynchronous RPC calls ;29-Jun-2012 15:50;PLS
  1. ;;1.1;CIA NETWORK COMPONENTS;**001007,001009**;Sep 18, 2007
  1. ;;Copyright 2000-2012, Medsphere Systems Corporation
  1. ;=================================================================
  1. ; Background task for executing an asynchronous RPC
  1. TASK N CIAD,TGT,$ET,$ES
  1. S $ET="D ERROR^CIANBASY",ZTREQ="@"
  1. K ^XTMP("CIA",CIA("UID"),"T",ZTSK)
  1. Q:$$S^%ZTLOAD
  1. S ^XTMP("CIA",CIA("UID"),"T",ZTSK)=0,TGT=$NA(^(ZTSK,0))
  1. S:XWBPTYPE=4 CIAD=TGT
  1. D DORPC^CIANBACT
  1. I XWBPTYPE=1 S @TGT@(0)=CIAD
  1. E I XWBPTYPE>1,XWBPTYPE<4 M @TGT=CIAD S:XWBPTYPE=2 XWBWRAP=1
  1. E I XWBPTYPE=4,$L(CIAD),CIAD'=TGT M @TGT=@CIAD K @CIAD
  1. E I XWBPTYPE=5 S @TGT@(0)=$G(@CIAD)
  1. E I XWBPTYPE="H" D
  1. .N X,Y,FIL,DIR
  1. .S X=$E($$DIRDLM^CIAUOS,3),Y=$L(CIAD,X),DIR=$P(CIAD,X,1,Y-1),FIL=$P(CIAD,X,Y)
  1. .I '$$FTG^%ZISH(DIR,FIL,$NA(@TGT@(0)),$QL(TGT)+1)
  1. .D DELETE^CIAUOS(CIAD)
  1. I $$S^%ZTLOAD K ^XTMP("CIA",CIA("UID"),"T",ZTSK)
  1. E S ^XTMP("CIA",CIA("UID"),"T",ZTSK)=ZTSK_"^0^"_XWBWRAP
  1. Q
  1. ERROR D SETERR(-1,$$EC^%ZOSV)
  1. D ^%ZTER,UNWIND^%ZTER
  1. Q
  1. ; Retrieve specified routine line
  1. RTNTEXT(RTN) ;
  1. N TAG
  1. S TAG=$P(RTN,U),RTN=$P(RTN,U,2)
  1. Q $S('$L(RTN):$T(^@TAG),$L(TAG):$T(@TAG^@RTN),1:$T(^@RTN))
  1. ; Set error info to return to client
  1. SETERR(CODE,TEXT) ;
  1. K ^XTMP("CIA",CIA("UID"),"T",ZTSK) M ^(ZTSK,0,0)=TEXT
  1. S ^XTMP("CIA",CIA("UID"),"T",ZTSK)=ZTSK_U_CODE_"^1"
  1. Q
  1. ; RPC to check for completed tasks
  1. ; Results[0] at the client end will contain the TaskMan ID of the
  1. ; completed RPC. The remainder of the Result will be the data
  1. ; returned by the RPC.
  1. ASYCHK() N ZTSK,CIAD,X
  1. S ZTSK=0
  1. F S ZTSK=+$O(^XTMP("CIA",CIA("UID"),"T",ZTSK)) Q:'ZTSK S X=$G(^(ZTSK)),CIAD=$NA(^(ZTSK,0)) I X D Q
  1. .D TCPUSE^CIANBLIS
  1. .W $C(2),X,$C(13),!
  1. .D OUT^CIANBACT(CIAD,$P(X,U,3))
  1. .K ^XTMP("CIA",CIA("UID"),"T",ZTSK)
  1. Q ZTSK
  1. ; RPC: Stop a task
  1. ; Signals to a backround task that it should stop running. Cleans up
  1. ; any output generated by completed tasks.
  1. STOP(CIAD,ZTSK) ;
  1. S CIAD=''$D(^XTMP("CIA",CIA("UID"),"T",ZTSK)) K:CIAD ^(ZTSK)
  1. Q:'$D(^%ZTSK(ZTSK))
  1. S $P(^%ZTSK(ZTSK,.1),U,10)=$P($G(^VA(200,DUZ,0)),U)
  1. D DQ^%ZTLOAD
  1. I $G(ZTSK(0)) D KILL^%ZTLOAD
  1. Q
  1. ; Stop all tasks in task list
  1. STOPALL N ZTSK
  1. S ZTSK=0
  1. F S ZTSK=$O(^XTMP("CIA",CIA("UID"),"T",ZTSK)) Q:'ZTSK D STOP(,ZTSK)
  1. K ^XTMP("CIA",CIA("UID"),"T")
  1. Q