1function [simDoc, section] = savePutStrategy(self, simDoc, section, ind)
2% [SIMDOC, SECTION] = SAVEPUTSTRATEGY(SIMDOC, SECTION, CURRENTNODE)
4% Copyright (c) 2012-2026, Imperial College London
6queuePutStrategyNode = simDoc.createElement(
'parameter');
7queuePutStrategyNode.setAttribute(
'array',
'true');
8queuePutStrategyNode.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategy');
9queuePutStrategyNode.setAttribute(
'name',
'QueuePutStrategy');
12numOfClasses = sn.nclasses;
13exportClasses = self.getExportableClasses();
15 % Skip
classes that should not be exported to JMT
20 refClassNode2 = simDoc.createElement(
'refClass');
21 refClassNode2.appendChild(simDoc.createTextNode(sn.classnames{r}));
23 queuePutStrategyNode.appendChild(refClassNode2);
25 if ~sn.isstation(ind) %
if not a station treat as FCFS
26 subParameterNode2 = simDoc.createElement(
'subParameter');
27 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.TailStrategy');
28 subParameterNode2.setAttribute(
'name',
'TailStrategy');
30 switch sn.sched(sn.nodeToStation(ind))
31 case SchedStrategy.SIRO
32 subParameterNode2 = simDoc.createElement(
'subParameter');
33 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.RandStrategy');
34 subParameterNode2.setAttribute(
'name',
'RandStrategy');
35 case SchedStrategy.LJF
36 subParameterNode2 = simDoc.createElement(
'subParameter');
37 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.LJFStrategy');
38 subParameterNode2.setAttribute(
'name',
'LJFStrategy');
39 case SchedStrategy.SJF
40 subParameterNode2 = simDoc.createElement(
'subParameter');
41 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.SJFStrategy');
42 subParameterNode2.setAttribute(
'name',
'SJFStrategy');
43 case SchedStrategy.LEPT
44 subParameterNode2 = simDoc.createElement(
'subParameter');
45 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.LEPTStrategy');
46 subParameterNode2.setAttribute(
'name',
'LEPTStrategy');
47 case SchedStrategy.SEPT
48 subParameterNode2 = simDoc.createElement(
'subParameter');
49 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.SEPTStrategy');
50 subParameterNode2.setAttribute(
'name',
'SEPTStrategy');
51 case SchedStrategy.LCFS
52 subParameterNode2 = simDoc.createElement(
'subParameter');
53 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.HeadStrategy');
54 subParameterNode2.setAttribute(
'name',
'HeadStrategy');
55 case SchedStrategy.LCFSPRIO
56 subParameterNode2 = simDoc.createElement(
'subParameter');
57 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.HeadStrategyPriority');
58 subParameterNode2.setAttribute(
'name',
'HeadStrategyPriority');
59 case SchedStrategy.LCFSPR
60 subParameterNode2 = simDoc.createElement(
'subParameter');
61 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPRStrategy');
62 subParameterNode2.setAttribute(
'name',
'LCFSPRStrategy');
63 case SchedStrategy.LCFSPI
64 subParameterNode2 = simDoc.createElement(
'subParameter');
65 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPIStrategy');
66 subParameterNode2.setAttribute(
'name',
'LCFSPIStrategy');
67 case SchedStrategy.LCFSPRPRIO
68 subParameterNode2 = simDoc.createElement(
'subParameter');
69 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPRStrategyPriority');
70 subParameterNode2.setAttribute(
'name',
'LCFSPRStrategyPriority');
71 case SchedStrategy.LCFSPIPRIO
72 subParameterNode2 = simDoc.createElement(
'subParameter');
73 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.LCFSPIStrategyPriority');
74 subParameterNode2.setAttribute(
'name',
'LCFSPIStrategyPriority');
75 case SchedStrategy.FCFSPR
76 subParameterNode2 = simDoc.createElement(
'subParameter');
77 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPRStrategy');
78 subParameterNode2.setAttribute(
'name',
'FCFSPRStrategy');
79 case SchedStrategy.FCFSPI
80 subParameterNode2 = simDoc.createElement(
'subParameter');
81 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPIStrategy');
82 subParameterNode2.setAttribute(
'name',
'FCFSPIStrategy');
83 case SchedStrategy.FCFSPRPRIO
84 subParameterNode2 = simDoc.createElement(
'subParameter');
85 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPRStrategyPriority');
86 subParameterNode2.setAttribute(
'name',
'FCFSPRStrategyPriority');
87 case SchedStrategy.FCFSPIPRIO
88 subParameterNode2 = simDoc.createElement(
'subParameter');
89 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.FCFSPIStrategyPriority');
90 subParameterNode2.setAttribute(
'name',
'FCFSPIStrategyPriority');
91 case {SchedStrategy.HOL, SchedStrategy.FCFSPRIO}
92 subParameterNode2 = simDoc.createElement(
'subParameter');
93 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.TailStrategyPriority');
94 subParameterNode2.setAttribute(
'name',
'TailStrategyPriority');
95 case SchedStrategy.EDD
96 % Note: JMT does not natively support EDD yet. This generates XML
for future compatibility.
97 % For now,
this will likely fall back to FCFS behavior in JMT execution.
98 subParameterNode2 = simDoc.createElement(
'subParameter');
99 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.EDDStrategy');
100 subParameterNode2.setAttribute(
'name',
'EDDStrategy');
101 case SchedStrategy.EDF
102 % Note: JMT does not natively support EDF yet. This generates XML
for future compatibility.
103 % For now,
this will likely fall back to FCFS behavior in JMT execution.
104 subParameterNode2 = simDoc.createElement(
'subParameter');
105 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.EDFStrategy');
106 subParameterNode2.setAttribute(
'name',
'EDFStrategy');
107 case SchedStrategy.SRPT
108 subParameterNode2 = simDoc.createElement(
'subParameter');
109 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.SRPTStrategy');
110 subParameterNode2.setAttribute(
'name',
'SRPTStrategy');
111 case SchedStrategy.SRPTPRIO
112 subParameterNode2 = simDoc.createElement(
'subParameter');
113 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.SRPTStrategyPriority');
114 subParameterNode2.setAttribute(
'name',
'SRPTStrategyPriority');
115 otherwise % treat as FCFS -
this is required
for PS
116 subParameterNode2 = simDoc.createElement(
'subParameter');
117 subParameterNode2.setAttribute(
'classPath',
'jmt.engine.NetStrategies.QueuePutStrategies.TailStrategy');
118 subParameterNode2.setAttribute(
'name',
'TailStrategy');
121 queuePutStrategyNode.appendChild(subParameterNode2);
122 section.appendChild(queuePutStrategyNode);