import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.linuxtools.lttng.tracecontrol.model.TargetResource;
-import org.eclipse.linuxtools.lttng.tracecontrol.model.TraceResource;
-import org.eclipse.linuxtools.lttng.tracecontrol.model.TraceResource.TraceState;
-import org.eclipse.linuxtools.lttng.tracecontrol.model.config.TraceConfig;
-import org.eclipse.linuxtools.lttng.tracecontrol.service.ILttControllerService;
+import org.eclipse.linuxtools.lttng.core.tracecontrol.model.TargetResource;
+import org.eclipse.linuxtools.lttng.core.tracecontrol.model.TraceResource;
+import org.eclipse.linuxtools.lttng.core.tracecontrol.model.TraceResource.TraceState;
+import org.eclipse.linuxtools.lttng.core.tracecontrol.model.config.TraceConfig;
+import org.eclipse.linuxtools.lttng.core.tracecontrol.service.ILttControllerService;
import org.eclipse.linuxtools.lttng.ui.LTTngUiPlugin;
-import org.eclipse.linuxtools.lttng.ui.tracecontrol.TraceControlConstants;
import org.eclipse.linuxtools.lttng.ui.tracecontrol.Messages;
+import org.eclipse.linuxtools.lttng.ui.tracecontrol.TraceControlConstants;
import org.eclipse.linuxtools.lttng.ui.tracecontrol.dialogs.NewTraceDialog;
import org.eclipse.linuxtools.lttng.ui.tracecontrol.subsystems.TraceSubSystem;
import org.eclipse.rse.core.events.ISystemRemoteChangeEvents;
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
-
- private TargetResource fSelectedTarget;
- private List<TargetResource> fSelectedFiles;
- private String fTraceName;
+
+ private final List<TargetResource> fSelectedFiles;
// ------------------------------------------------------------------------
// Constructors
* Constructor for CreateNewTrace.
*/
public CreateNewTrace() {
- fSelectedFiles= new ArrayList<TargetResource>();
+ fSelectedFiles = new ArrayList<TargetResource>();
}
// ------------------------------------------------------------------------
/*
* (non-Javadoc)
- * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart)
+ *
+ * @see
+ * org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.
+ * action.IAction, org.eclipse.ui.IWorkbenchPart)
*/
@Override
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
*/
protected TargetResource getFirstSelectedTarget() {
if (fSelectedFiles.size() > 0) {
- return (TargetResource) fSelectedFiles.get(0);
+ return fSelectedFiles.get(0);
}
return null;
}
/*
* (non-Javadoc)
+ *
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
@Override
public void run(IAction action) {
Shell shell = getShell();
- fSelectedTarget = getFirstSelectedTarget();
- TraceSubSystem subSystem = (TraceSubSystem)fSelectedTarget.getSubSystem();
- NewTraceDialog dialog = new NewTraceDialog(shell, subSystem, fSelectedTarget);
-
+ final TargetResource targetResource = getFirstSelectedTarget();
+ TraceSubSystem subSystem = (TraceSubSystem) targetResource.getSubSystem();
+ NewTraceDialog dialog = new NewTraceDialog(shell, subSystem, targetResource);
+
final TraceConfig traceConfig = dialog.open();
- if (traceConfig != null) {
-
- fTraceName = traceConfig.getTraceName();
+ if (traceConfig == null) {
+ return;
+ }
- try {
- final ILttControllerService service = subSystem.getControllerService();
+ try {
+ final ILttControllerService service = subSystem.getControllerService();
- if (fSelectedTarget.isUst()) {
- boolean ok = setupUstLocation(service, fSelectedTarget, traceConfig);
- if (!ok) {
- return;
- }
- }
-
- // Create future task
- @SuppressWarnings("unused")
- Boolean success = new TCFTask<Boolean>() {
- @Override
- public void run() {
-
- // Setup trace using Lttng controller service proxy
- service.setupTrace(fSelectedTarget.getParent().getName(), fSelectedTarget.getName(), traceConfig.getTraceName(), new ILttControllerService.DoneSetupTrace() {
-
- @Override
- public void doneSetupTrace(IToken token, Exception error, Object str) {
- if (error != null) {
- // Notify with error
- error(error);
- return;
- }
+ TraceResource trace = new TraceResource(targetResource.getSubSystem(), service);
+ trace.setName(traceConfig.getTraceName());
+ trace.setParent(targetResource);
+ trace.setTraceConfig(traceConfig);
- // Notify about success
- done(Boolean.valueOf(true));
- }
- });
- }}.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
-
- // Enable all channels by default
- setChannelEnable(service, fSelectedTarget, traceConfig, TraceControlConstants.Lttng_Control_AllChannels, true);
-
- } catch (Exception e) {
- SystemMessageException sysExp;
- if (e instanceof SystemMessageException) {
- sysExp = (SystemMessageException)e;
- } else {
- sysExp = new SystemMessageException(LTTngUiPlugin.getDefault().getMessage(e));
+ if (targetResource.isUst()) {
+ boolean ok = setupUstLocation(service, targetResource, traceConfig);
+ if (!ok) {
+ return;
}
- SystemBasePlugin.logError(Messages.Lttng_Control_ErrorNewTrace + " (" + //$NON-NLS-1$
- Messages.Lttng_Resource_Trace + ": " + traceConfig.getTraceName() + ")", sysExp); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ trace.setupTrace();
- return;
+ if (!targetResource.isUst()) {
+
+ // Enable all channels by default
+ trace.setChannelEnable(TraceControlConstants.Lttng_Control_AllChannels, true);
+
+ // Set overwrite mode for all channels according to user
+ // selection (true for flight recorder, false for normal)
+ trace.setChannelOverwrite(TraceControlConstants.Lttng_Control_AllChannels, traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE);
+
+ // Set channel timer for all channels
+ final long period = 1000;
+ trace.setChannelTimer(TraceControlConstants.Lttng_Control_AllChannels, period);
+
+ // Set subbuffer size for all channels
+ final long subbufSize = 16384;
+ trace.setChannelSubbufSize(TraceControlConstants.Lttng_Control_AllChannels, subbufSize);
+
+ // Set number of subbuffers for all channels
+ final long subbufNum = 2;
+ trace.setChannelSubbufNum(TraceControlConstants.Lttng_Control_AllChannels, subbufNum);
+ }
+
+ if (traceConfig.isNetworkTrace()) {
+
+ File newDir = new File(traceConfig.getTracePath());
+ if (!newDir.exists()) {
+ boolean created = newDir.mkdirs();
+ if (!created) {
+ throw new Exception(Messages.Lttng_Control_ErrorCreateTracePath + ": " + traceConfig.getTracePath()); //$NON-NLS-1$
+ }
+ }
}
- TraceResource trace = new TraceResource(fSelectedTarget.getSubSystem());
- trace.setName(fTraceName);
- trace.setParent(fSelectedTarget);
-
if (trace.isUst()) {
// in UST the tracing is started after setupTrace!!
trace.setTraceState(TraceState.STARTED);
- }
- else {
+ } else {
trace.setTraceState(TraceState.CONFIGURED);
}
-
- trace.setTraceConfig(traceConfig);
- fSelectedTarget.addTrace(trace);
+
+ targetResource.addTrace(trace);
ISystemRegistry registry = SystemStartHere.getSystemRegistry();
- registry.fireRemoteResourceChangeEvent(ISystemRemoteChangeEvents.SYSTEM_REMOTE_RESOURCE_CREATED, trace, fSelectedTarget, subSystem, null);
+ registry.fireRemoteResourceChangeEvent(ISystemRemoteChangeEvents.SYSTEM_REMOTE_RESOURCE_CREATED, trace, targetResource, subSystem, null);
+
+ } catch (Exception e) {
+ SystemMessageException sysExp;
+ if (e instanceof SystemMessageException) {
+ sysExp = (SystemMessageException) e;
+ } else {
+ sysExp = new SystemMessageException(LTTngUiPlugin.getDefault().getMessage(e));
+ }
+ SystemBasePlugin.logError(Messages.Lttng_Control_ErrorNewTrace + " (" + //$NON-NLS-1$
+ Messages.Lttng_Resource_Trace + ": " + traceConfig.getTraceName() + ")", sysExp); //$NON-NLS-1$ //$NON-NLS-2$
+
+ return;
}
+
}
/*
* (non-Javadoc)
- * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
+ *
+ * @see
+ * org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action
+ * .IAction, org.eclipse.jface.viewers.ISelection)
*/
@Override
@SuppressWarnings("unchecked")
while (theSet.hasNext()) {
Object obj = theSet.next();
if (obj instanceof TargetResource) {
- fSelectedFiles.add((TargetResource)obj);
+ fSelectedFiles.add((TargetResource) obj);
}
}
}
protected Shell getShell() {
return SystemBasePlugin.getActiveWorkbenchShell();
}
-
+
/*
* (non-Javadoc)
- * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.IWorkbenchWindow)
+ *
+ * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.
+ * IWorkbenchWindow)
*/
@Override
public void init(IWorkbenchWindow window) {
/*
* (non-Javadoc)
+ *
* @see org.eclipse.ui.IWorkbenchWindowActionDelegate#dispose()
*/
@Override
/*
* (non-Javadoc)
+ *
* @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
*/
@Override
public void init(IViewPart view) {
}
-
+
/*
* Setup the trace location for UST.
- */
- private boolean setupUstLocation(final ILttControllerService service, final TargetResource targetResource, final TraceConfig traceConfig) throws Exception {
+ */
+ private boolean setupUstLocation(final ILttControllerService service, final TargetResource targetResource, final TraceConfig traceConfig)
+ throws Exception {
if (traceConfig.isNetworkTrace()) {
- File localDir = new File(traceConfig.getTracePath());
- if (!localDir.exists()) {
- boolean success = localDir.mkdirs();
- if (!success) {
- return false;
- }
- }
+ File localDir = new File(traceConfig.getTracePath());
+ if (!localDir.exists()) {
+ boolean success = localDir.mkdirs();
+ if (!success) {
+ return false;
+ }
+ }
// Create future task
boolean ok = new TCFTask<Boolean>() {
public void run() {
// Setup trace location using Lttng controller service proxy
- service.writeTraceNetwork(targetResource.getParent().getName(),
- targetResource.getName(),
- traceConfig.getTraceName(),
- traceConfig.getNumChannel(),
- traceConfig.getIsAppend(),
- traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE,
- traceConfig.getMode() == TraceConfig.NORMAL_MODE,
- new ILttControllerService.DoneWriteTraceNetwork() {
-
- @Override
- public void doneWriteTraceNetwork(IToken token, Exception error, Object str) {
- if (error != null) {
- // Notify with error
- error(error);
- return;
- }
-
- // Notify about success
- done(true);
- }
- });
- }}.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
+ service.writeTraceNetwork(targetResource.getParent().getName(), targetResource.getName(), traceConfig.getTraceName(),
+ traceConfig.getNumChannel(), traceConfig.getIsAppend(), traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE,
+ traceConfig.getMode() == TraceConfig.NORMAL_MODE, new ILttControllerService.DoneWriteTraceNetwork() {
+
+ @Override
+ public void doneWriteTraceNetwork(IToken token, Exception error, Object str) {
+ if (error != null) {
+ // Notify with error
+ error(error);
+ return;
+ }
+
+ // Notify about success
+ done(true);
+ }
+ });
+ }
+ }.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
return ok;
} else {
// Create future task
public void run() {
// Setup trace location using Lttng controller service proxy
- service.writeTraceLocal(targetResource.getParent().getName(),
- targetResource.getName(),
- traceConfig.getTraceName(),
- traceConfig.getTracePath(),
- traceConfig.getNumChannel(),
- traceConfig.getIsAppend(),
- traceConfig.getMode() == TraceConfig.NORMAL_MODE,
- traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE,
+ service.writeTraceLocal(targetResource.getParent().getName(), targetResource.getName(), traceConfig.getTraceName(),
+ traceConfig.getTracePath(), traceConfig.getNumChannel(), traceConfig.getIsAppend(),
+ traceConfig.getMode() == TraceConfig.NORMAL_MODE, traceConfig.getMode() == TraceConfig.FLIGHT_RECORDER_MODE,
new ILttControllerService.DoneWriteTraceLocal() {
- @Override
- public void doneWriteTraceLocal(IToken token, Exception error, Object str) {
- if (error != null) {
- // Notify with error
- error(error);
- return;
- }
-
- // Notify about success
- done(true);
- }
- });
- }}.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
+ @Override
+ public void doneWriteTraceLocal(IToken token, Exception error, Object str) {
+ if (error != null) {
+ // Notify with error
+ error(error);
+ return;
+ }
+
+ // Notify about success
+ done(true);
+ }
+ });
+ }
+ }.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
return ok;
}
}
- /*
- * Enable or disable a channel on the remote system.
- */
- private void setChannelEnable(final ILttControllerService service, final TargetResource targetResource, final TraceConfig traceConfig, final String channelName, final boolean enabled) throws Exception{
- // Create future task
- new TCFTask<Boolean>() {
- @Override
- public void run() {
-
- // Set marker enable using Lttng controller service proxy
- service.setChannelEnable(targetResource.getParent().getName(),
- targetResource.getName(),
- traceConfig.getTraceName(),
- channelName,
- enabled,
- new ILttControllerService.DoneSetChannelEnable() {
-
- @Override
- public void doneSetChannelEnable(IToken token, Exception error, Object str) {
- if (error != null) {
- // Notify with error
- error(error);
- return;
- }
-
- // Notify about success
- done(Boolean.valueOf(true));
- }
- });
- }}.get(TraceControlConstants.DEFAULT_TCF_TASK_TIMEOUT, TimeUnit.SECONDS);
- }
-}
\ No newline at end of file
+}