aboutsummaryrefslogtreecommitdiff
path: root/vendor/voclient/voapps/task/Notes.fitz
blob: fe36e903c4d1e75b9e469593f819a3cfe356c808 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Client Interface:
    =================
    
    Package/Task Management:
    ------------------------
  
                    vo_setPkgDir  (path)	      # set package dir
             path = vo_getPkgDir  ()	      	      # get package dir
  
                pkg = vo_pkgList  (pattern)    	      # Get available packages
  	         len = vo_pkgLen  (pkg)
  	        pkg = vo_pkgNext  (pkg)
  	        str = vo_pkgAttr  (pkg, attr)
  	
              task = vo_taskList  (taskName) 	      # Get tasks in package
  	        len = vo_taskLen  (task)
  	       str = vo_taskNext  (task)
  	      task = vo_taskAttr  (task, attr)
  	
              pp = vo_taskParams  (pkgName, taskName) # Input param defs
  		( see parameter handling below )
  
                 xml = vo_pkgXML  (pattern)    	      # XML serializations (opt)
                xml = vo_taskXML  (pkgName)
               xml = vo_paramXML  (pkgName, taskName)
  						
  						
    Task Execution:						
    ---------------
  
                tp = vo_taskInit  (pkgName, taskName) # Initialize a task
   
           vo_taskSetStringParam  (tp, pname, sval)   # Set input params
             vo_taskSetBoolParam  (tp, pname, bval)
              vo_taskSetIntParam  (tp, pname, ival)
             vo_taskSetRealParam  (tp, pname, dval)
             vo_taskSetDictParam  (tp, pname, dict)
             vo_taskSetListParam  (tp, pname, list)
              vo_taskSetPtrParam  (tp, pname, ptr, size)
   
              vo_taskSetCallback  (tp, type, &func)   # Set param callback
         rp = vo_taskExecuteSync  (tp, status, msg)   # Execute sync
             vo_taskExecuteAsync  (tp)      	      # Execute async
                rp = vo_taskWait  (tp)      	      # Wait for task, get RP
      status = vo_taskCheckError  (tp, msg)	      # Check for any error
   
                    vo_taskClose  (tp)      	      # Free task resources
   
    Parameter Handling: 
    -------------------
  
    Directed parameter access:
  
         int = vo_taskParamCount  (rp)
             vo_taskGetParamInfo  (rp, pnum, *name, *type, *encoding,
   					 *description)
     str = vo_taskGetStringParam  (rp, pname, pnum)  # pnum used if pname=null
      ival = vo_taskGetBoolParam  (rp, pname, pnum)
       ival = vo_taskGetIntParam  (rp, pname, pnum)
      dval = vo_taskGetRealParam  (rp, pname, pnum)
      dict = vo_taskGetDictParam  (rp, pname, pnum)
      dict = vo_taskGetListParam  (rp, pname, pnum)
     void = vo_taskGetParamValue  (rp, pname, pnum,  size)
   
    Iterated parameter access:
  
            pp = vo_taskGetParam  (rp, pname, pnum)       
  	       len = vo_paramLen  (pp, [typ|enc])
  	       pp = vo_paramNext  (pp, [typ|enc])
  	      str = vo_paramAttr  (pp, attr)


Notes:
======

    - Added set/get methods for the package directory to be searched for 
      packages.  This allows a client to point to different dirs depending
      on which package is being 'loaded'.
    - The pkgList() takes a 'pattern' param to select only files matching a
      specific pattern (e.g. "*.e" or "*.pkg") from the working directory.
      Only files matching the pattern (or all files if NULL) will be queried
      for metadata.  This also allows for a directory to contain single-task
      binaries and not require a single binary for all tasks in a package.
    - Made pkg/task/param listings optionally XML, these are manageable by
      many languages but not always 'natural'.  The use of iterators allows
      a client to traverse the metadata and request attributes w/out depending
      on an XML parser.
    - Added 'pname' to the setParam() methods to set specific params.
    - Added status/msg returns from sync execution
    - Input and output parameters share the same data structure and interface
      methods work on either.  This means a 'blob' can now be an input param, 
      e.g. an in-memory object (e.g. a target list or TAP ADQL string) from a
      client can be posted over IPC to the task.  Note however this may not be
      implemented for current tasks.
    - Parameter callbacks can be set for specific parameter types
    - Parameter iterators allow a 'type' or 'encoding' option to find the
      next param of the same typ/enc.  This allows a client to skip through
      output params to find e.g. only FITS objects or only the stdout text
      strings and means the callback can be tied to a parameter type easily.