001 package edu.rice.cs.cunit.record.syncPoints;
002
003 import edu.rice.cs.cunit.record.syncPoints.object.ObjectEnterWaitSyncPoint;
004 import edu.rice.cs.cunit.record.syncPoints.object.ObjectLeaveWaitSyncPoint;
005 import edu.rice.cs.cunit.record.syncPoints.object.ObjectNotifyAllSyncPoint;
006 import edu.rice.cs.cunit.record.syncPoints.object.ObjectNotifySyncPoint;
007 import edu.rice.cs.cunit.record.syncPoints.sync.*;
008 import edu.rice.cs.cunit.record.syncPoints.thread.*;
009 import edu.rice.cs.cunit.instrumentors.DoNotInstrument;
010
011 /**
012 * Interface for a synchronization point visitor.
013 *
014 * @author Mathias Ricken
015 */
016 @DoNotInstrument
017 public interface ISyncPointVisitor<R,P> {
018 /**
019 * Executed if the host is a ThreadStartSyncPoint.
020 * @param host ThreadStartSyncPoint
021 * @param param visitor-specific parameter
022 * @return visitor-specific return value
023 */
024 public R threadStartCase(ThreadStartSyncPoint.Translated host, P param);
025
026 /**
027 * Executed if the host is a ThreadExitSyncPoint.
028 * @param host ThreadExitSyncPoint
029 * @param param visitor-specific parameter
030 * @return visitor-specific return value
031 */
032 public R threadExitCase(ThreadExitSyncPoint.Translated host, P param);
033
034 /**
035 * Executed if the host is a ThreadDestroySyncPoint.
036 * @param host ThreadDestroySyncPoint
037 * @param param visitor-specific parameter
038 * @return visitor-specific return value
039 */
040 public R threadDestroyCase(ThreadDestroySyncPoint.Translated host, P param);
041
042 /**
043 * Executed if the host is a ThreadInterruptSyncPoint.
044 * @param host ThreadInterruptSyncPoint
045 * @param param visitor-specific parameter
046 * @return visitor-specific return value
047 */
048 public R threadInterruptCase(ThreadInterruptSyncPoint.Translated host, P param);
049
050 /**
051 * Executed if the host is a ThreadEnterJoinSyncPoint.
052 * @param host ThreadEnterJoinSyncPoint
053 * @param param visitor-specific parameter
054 * @return visitor-specific return value
055 */
056 public R threadJoinCase(ThreadEnterJoinSyncPoint.Translated host, P param);
057
058 /**
059 * Executed if the host is a ThreadLeaveJoinSyncPoint.
060 * @param host ThreadLeaveJoinSyncPoint
061 * @param param visitor-specific parameter
062 * @return visitor-specific return value
063 */
064 public R threadJoinEndCase(ThreadLeaveJoinSyncPoint.Translated host, P param);
065
066 /**
067 * Executed if the host is a ThreadResumeSyncPoint.
068 * @param host ThreadResumeSyncPoint
069 * @param param visitor-specific parameter
070 * @return visitor-specific return value
071 */
072 public R threadResumeCase(ThreadResumeSyncPoint.Translated host, P param);
073
074 /**
075 * Executed if the host is a ThreadStopSyncPoint.
076 * @param host ThreadStopSyncPoint
077 * @param param visitor-specific parameter
078 * @return visitor-specific return value
079 */
080 public R threadStopCase(ThreadStopSyncPoint.Translated host, P param);
081
082 /**
083 * Executed if the host is a ThreadSuspendSyncPoint.
084 * @param host ThreadSuspendSyncPoint
085 * @param param visitor-specific parameter
086 * @return visitor-specific return value
087 */
088 public R threadSuspendCase(ThreadSuspendSyncPoint.Translated host, P param);
089
090 /**
091 * Executed if the host is a ThreadSetPrioritySyncPoint.
092 * @param host ThreadSetPrioritySyncPoint
093 * @param param visitor-specific parameter
094 * @return visitor-specific return value
095 */
096 public R threadSetPriorityCase(ThreadSetPrioritySyncPoint.Translated host, P param);
097
098 /**
099 * Executed if the host is a ThreadEnterSleepSyncPoint.
100 * @param host ThreadEnterSleepSyncPoint
101 * @param param visitor-specific parameter
102 * @return visitor-specific return value
103 */
104 public R threadSleepCase(ThreadEnterSleepSyncPoint.Translated host, P param);
105
106 /**
107 * Executed if the host is a ThreadLeaveSleepSyncPoint.
108 * @param host ThreadLeaveSleepSyncPoint
109 * @param param visitor-specific parameter
110 * @return visitor-specific return value
111 */
112 public R threadSleepEndCase(ThreadLeaveSleepSyncPoint.Translated host, P param);
113
114 /**
115 * Executed if the host is a ThreadEnterYieldSyncPoint.
116 * @param host ThreadEnterYieldSyncPoint
117 * @param param visitor-specific parameter
118 * @return visitor-specific return value
119 */
120 public R threadYieldCase(ThreadEnterYieldSyncPoint.Translated host, P param);
121
122 /**
123 * Executed if the host is a ThreadLeaveYieldSyncPoint.
124 * @param host ThreadLeaveYieldSyncPoint
125 * @param param visitor-specific parameter
126 * @return visitor-specific return value
127 */
128 public R threadYieldEndCase(ThreadLeaveYieldSyncPoint.Translated host, P param);
129
130 /**
131 * Executed if the host is an ObjectNotifySyncPoint.
132 * @param host ObjectNotifySyncPoint
133 * @param param visitor-specific parameter
134 * @return visitor-specific return value
135 */
136 public R objectNotifyCase(ObjectNotifySyncPoint.Translated host, P param);
137
138 /**
139 * Executed if the host is an ObjectNotifyAllSyncPoint.
140 * @param host ObjectNotifyAllSyncPoint
141 * @param param visitor-specific parameter
142 * @return visitor-specific return value
143 */
144 public R objectNotifyAllCase(ObjectNotifyAllSyncPoint.Translated host, P param);
145
146 /**
147 * Executed if the host is an ObjectEnterWaitSyncPoint.
148 * @param host ObjectEnterWaitSyncPoint
149 * @param param visitor-specific parameter
150 * @return visitor-specific return value
151 */
152 public R objectWaitCase(ObjectEnterWaitSyncPoint.Translated host, P param);
153
154 /**
155 * Executed if the host is an ObjectLeaveWaitSyncPoint.
156 * @param host ObjectLeaveWaitSyncPoint
157 * @param param visitor-specific parameter
158 * @return visitor-specific return value
159 */
160 public R objectWaitEndCase(ObjectLeaveWaitSyncPoint.Translated host, P param);
161
162 /**
163 * Executed if the host is an SynchronizedTryEnterBlockSyncPoint.
164 * @param host SynchronizedTryEnterBlockSyncPoint
165 * @param param visitor-specific parameter
166 * @return visitor-specific return value
167 */
168 public R synchronizedBlockTryCase(SynchronizedTryEnterBlockSyncPoint.Translated host, P param);
169
170 /**
171 * Executed if the host is an SynchronizedEnterBlockSyncPoint.
172 * @param host SynchronizedEnterBlockSyncPoint
173 * @param param visitor-specific parameter
174 * @return visitor-specific return value
175 */
176 public R synchronizedBlockBeginCase(SynchronizedEnterBlockSyncPoint.Translated host, P param);
177
178 /**
179 * Executed if the host is an SynchronizedLeaveBlockSyncPoint.
180 * @param host SynchronizedLeaveBlockSyncPoint
181 * @param param visitor-specific parameter
182 * @return visitor-specific return value
183 */
184 public R synchronizedBlockEndCase(SynchronizedLeaveBlockSyncPoint.Translated host, P param);
185 }