@@ -16,6 +16,7 @@ public class concoredocker {
1616 private static String inpath = "/in" ;
1717 private static String outpath = "/out" ;
1818 private static Map <String , Object > params = new HashMap <>();
19+ private static int simtime = 0 ;
1920 private static int maxtime ;
2021
2122 public static void main (String [] args ) {
@@ -63,19 +64,19 @@ private static Map<String, Object> parseFile(String filename) throws IOException
6364 private static void defaultMaxTime (int defaultValue ) {
6465 try {
6566 String content = new String (Files .readAllBytes (Paths .get (inpath + "1/concore.maxtime" )));
66- // changed assumption from map to list for maxtime, as it usually represents a list of time steps
67- maxtime = ((List <?>) literalEval (content )).size ();
68- } catch (IOException e ) {
67+ maxtime = ((Number ) literalEval (content )).intValue ();
68+ } catch (Exception e ) {
6969 maxtime = defaultValue ;
7070 }
7171 }
7272
73- private static void unchanged () {
73+ private static boolean unchanged () {
7474 if (olds .equals (s )) {
7575 s = "" ;
76- } else {
77- olds = s ;
76+ return true ;
7877 }
78+ olds = s ;
79+ return false ;
7980 }
8081
8182 private static Object tryParam (String n , Object i ) {
@@ -95,9 +96,13 @@ private static Object read(int port, String name, String initstr) {
9596 retrycount ++;
9697 }
9798 s += ins ;
98- Object [] inval = ((List <?>) literalEval (ins )).toArray (); // FIXED: Casted to List, converted to Array
99- int simtime = Math .max ((int ) inval [0 ], 0 ); // assuming simtime is an integer
100- return inval [1 ];
99+ List <?> inval = (List <?>) literalEval (ins );
100+ simtime = Math .max (simtime , ((Number ) inval .get (0 )).intValue ());
101+ Object [] val = new Object [inval .size () - 1 ];
102+ for (int i = 1 ; i < inval .size (); i ++) {
103+ val [i - 1 ] = inval .get (i );
104+ }
105+ return val ;
101106 } catch (IOException | InterruptedException | ClassCastException e ) {
102107 return initstr ;
103108 }
@@ -110,20 +115,21 @@ private static void write(int port, String name, Object val, int delta) {
110115 if (val instanceof String ) {
111116 Thread .sleep (2 * delay );
112117 } else if (!(val instanceof Object [])) {
113- System .out .println ("mywrite must have list or str" );
114- System . exit ( 1 ) ;
118+ System .out .println ("write must have list or str" );
119+ return ;
115120 }
116121 if (val instanceof Object []) {
117122 Object [] arrayVal = (Object []) val ;
118123 content .append ("[" )
119- .append (maxtime + delta )
124+ .append (simtime + delta )
120125 .append ("," )
121126 .append (arrayVal [0 ]);
122127 for (int i = 1 ; i < arrayVal .length ; i ++) {
123128 content .append ("," )
124129 .append (arrayVal [i ]);
125130 }
126131 content .append ("]" );
132+ simtime += delta ;
127133 } else {
128134 content .append (val );
129135 }
@@ -134,13 +140,14 @@ private static void write(int port, String name, Object val, int delta) {
134140 }
135141
136142 private static Object [] initVal (String simtimeVal ) {
137- int simtime = 0 ;
138143 Object [] val = new Object [] {};
139144 try {
140- Object [] arrayVal = ((List <?>) literalEval (simtimeVal )).toArray (); // FIXED: Casted to List, converted to Array
141- simtime = (int ) arrayVal [0 ]; // assuming simtime is an integer
142- val = new Object [arrayVal .length - 1 ];
143- System .arraycopy (arrayVal , 1 , val , 0 , val .length );
145+ List <?> inval = (List <?>) literalEval (simtimeVal );
146+ simtime = ((Number ) inval .get (0 )).intValue ();
147+ val = new Object [inval .size () - 1 ];
148+ for (int i = 1 ; i < inval .size (); i ++) {
149+ val [i - 1 ] = inval .get (i );
150+ }
144151 } catch (Exception e ) {
145152 e .printStackTrace ();
146153 }
0 commit comments