Modified interfaces:
[dyninst.git] / paradyn / h / performanceConsultant.I
1
2 /*
3  * Interface between the Performance Consultant and the rest of paradyn.
4  *
5  * $Log: performanceConsultant.I,v $
6  * Revision 1.11  1995/02/16 08:01:45  markc
7  * Modified interfaces:
8  *   1) XDR interfaces use strings and vectors instead of igen arrays and char*'s
9  *   2) No sync upcalls are allowed by the server in xdr interfaces
10  *   3) Redefined igen arrays that were used in thread code to use manually defined
11  *      structures rather than igen-defined, since igen did not need to know about
12  *      these structures.
13  *   4) Upped all of the version numbers since all new interface code is generated
14  *   5) Async calls are no longer handled while waiting for sync responses, these
15  *      requests are buffered.
16  *
17  * Revision 1.10  1995/01/26  17:59:31  jcargill
18  * Changed igen-generated include files to new naming convention; fixed
19  * some bugs compiling with gcc-2.6.3.
20  *
21  * Revision 1.9  1994/09/22  00:45:15  markc
22  * Made array declarations explicit
23  * Incremented version number
24  *
25  * Revision 1.8  1994/08/17  17:55:29  markc
26  * Incremented version numbers because a new version of igen has been
27  * committed.
28  *
29  * Revision 1.7  1994/05/09  20:53:36  hollings
30  * added changeState to dataManager, and clearSHG to performanceConsultant.
31  *
32  * Revision 1.6  1994/05/06  06:50:45  karavan
33  * added startSHG().
34  *
35  * Revision 1.5  1994/05/02  20:36:50  hollings
36  * Added pause and shg get node routines.
37  *
38  * Revision 1.4  1994/04/27  22:54:52  hollings
39  * Merged refine auto and search.
40  *
41  * Revision 1.3  1994/04/21  05:01:21  karavan
42  * changed search and autoRefine to async to avoid deadlock with UIM.
43  *
44  * Revision 1.2  1994/02/02  00:43:20  hollings
45  * Added Auto Refinement options.
46  *
47  * Revision 1.1  1994/02/01  18:47:35  hollings
48  * Upgrades for performanceConsultant thread.
49  *
50  */
51 #include "dataManager.thread.h"
52
53 //
54 // Forward decl of classes that are passed out the interface.
55 //
56 class searchHistoryNode;
57 typedef searchHistoryNode *SHNptr;
58
59 typedef struct int_Array {
60   int count;
61   int *data;
62 } int_Array;
63
64 typedef struct SHNptr_Array {
65   int count;
66   SHNptr *data;
67 } SHNptr_Array;
68
69 $remote performanceConsultant {
70     $base 6000;
71     $version 4;
72
73     // for all of the configured tests print their status.
74     //  This is intended for debugging only.
75     void printTestStatus();
76
77     // enumerate all of the refinements.
78     SHNptr_Array getWhyRefinements(searchHistoryNode *);
79     SHNptr_Array getWhenRefinements(searchHistoryNode *);
80     SHNptr_Array getWhereRefinements(searchHistoryNode *);
81     SHNptr_Array getAllRefinements(searchHistoryNode *);
82
83     // return the current refinement node.
84     searchHistoryNode *getCurrentRefinement();
85     int getCurrentNodeId();
86
87     // make PC available to user
88     $async void startSHG();
89
90     // destroy any shg state we have
91     $async void clearSHG();
92
93     void printSHGNode(searchHistoryNode *);
94     void printSHGList();
95
96     // try to make automated refinements.  Up to limit number of steps.
97     $async void search(bool, int limit);
98
99     // stop the automated search process in its tracks.
100     $async void pauseSearch();
101
102     // change the current refinement node.
103     //  NOTE:  The node must be true and an ancestral path to the root must
104     //         also be true or set will fail.
105     //         As a side effect, searching is paused!!
106     int setCurrentSHGnode(int node);
107
108     void createInterval(int, timeStamp, timeStamp, char*);
109
110     // This doesn't work yet !!
111     void doRefine(int_Array ids);
112
113     // Really just setCurrentSHGnode(id of root node).
114     $async void resetRefinement();
115 };