classdef DispatcherEventData < event.EventData
    properties (SetAccess = immutable)
        Level(1,1) bioinfo.pipeline.LogLevel
        UUID(:,1) string
        Type bioinfo.pipeline.internal.DispatchType
        TimeStamp(1,1) datetime
        Message(1,1) string
        MException MException {mustBeScalarOrEmpty}
    end

    methods
        function obj = DispatcherEventData(level, message, timeStamp, type, uuid, mException)
            arguments
                level(1,1) bioinfo.pipeline.LogLevel
                message(1,1) string
                timeStamp(1,1) datetime
                type bioinfo.pipeline.internal.DispatchType
                uuid(:,1) string
                mException MException {mustBeScalarOrEmpty}
            end

            obj.Level       = level;
            obj.Message     = message;
            obj.TimeStamp   = timeStamp;
            obj.Type        = type;
            obj.UUID        = uuid;
            obj.MException  = mException;
        end
    end
end