All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ssssssss.magicapi.controller.MagicDebugHandler Maven / Gradle / Ivy

There is a newer version: 2.1.1
Show newest version
package org.ssssssss.magicapi.controller;

import org.ssssssss.magicapi.config.Message;
import org.ssssssss.magicapi.config.MessageType;
import org.ssssssss.magicapi.config.WebSocketSessionManager;
import org.ssssssss.magicapi.model.MagicConsoleSession;
import org.ssssssss.script.MagicScriptDebugContext;

import java.util.stream.Collectors;
import java.util.stream.Stream;


public class MagicDebugHandler {

	/**
	 * 设置会话ID
	 * 只在本机处理。
	 */
	@Message(MessageType.SET_SESSION_ID)
	public void setSessionId(MagicConsoleSession session, String sessionId) {
		WebSocketSessionManager.remove(session);
		session.setId(sessionId);
		WebSocketSessionManager.add(session);
	}

	/**
	 * 设置断点
	 * 当本机没有该Session时,通知其他机器处理
	 */
	@Message(MessageType.SET_BREAKPOINT)
	public boolean setBreakPoint(MagicConsoleSession session, String breakpoints) {
		MagicScriptDebugContext context = session.getMagicScriptDebugContext();
		if (context != null) {
			context.setBreakpoints(Stream.of(breakpoints.split(",")).map(Integer::valueOf).collect(Collectors.toList()));
			return true;
		}
		return false;
	}

	/**
	 * 恢复断点
	 * 当本机没有该Session时,通知其他机器处理
	 */
	@Message(MessageType.RESUME_BREAKPOINT)
	public boolean resumeBreakpoint(MagicConsoleSession session, String stepInto) {
		MagicScriptDebugContext context = session.getMagicScriptDebugContext();
		if (context != null) {
			context.setStepInto("1".equals(stepInto));
			try {
				context.singal();
			} catch (InterruptedException ignored) {
			}
			return true;
		}
		return false;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy