- Timestamp:
- 07/06/13 03:51:11 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/diagnostics/Diagnostics.java
r96 r97 11 11 import org.apache.log4j.Logger; 12 12 13 import com.framsticks.core.Abstract InstanceListener;14 import com.framsticks.core. Instance;13 import com.framsticks.core.AbstractTreeListener; 14 import com.framsticks.core.Tree; 15 15 import com.framsticks.core.Path; 16 16 import com.framsticks.dumping.PrintWriterSink; … … 19 19 import com.framsticks.remote.RecursiveFetcher; 20 20 import com.framsticks.util.FramsticksException; 21 import com.framsticks.util.Logging;22 21 import com.framsticks.util.PeriodicTask; 23 import com.framsticks.util.StateFunctor; 22 import com.framsticks.util.dispatching.ExceptionResultHandler; 23 import com.framsticks.util.dispatching.FutureHandler; 24 24 import com.framsticks.util.dispatching.JoinableCollection; 25 import com.framsticks.util.dispatching.ThrowExceptionHandler; 25 26 import com.framsticks.util.io.Encoding; 26 27 … … 28 29 * @author Piotr Sniegowski 29 30 */ 30 public class Diagnostics extends JoinableCollection< Instance> {31 public class Diagnostics extends JoinableCollection<Tree> { 31 32 private static final Logger log = Logger.getLogger(Diagnostics.class); 32 33 … … 41 42 42 43 44 43 45 @Override 44 46 @AutoAppendAnnotation 45 public void add(final Instance instance) {46 super.add( instance);47 public void add(final Tree tree) { 48 super.add(tree); 47 49 48 instance.addListener(new AbstractInstanceListener() {50 tree.addListener(new AbstractTreeListener() { 49 51 @Override 50 52 public void onRun(Exception e) { … … 54 56 55 57 if (dumpsInterval != null) { 56 new PeriodicTask<Instance>(instance, dumpsInterval * 1000) { 58 new PeriodicTask<Tree>(ThrowExceptionHandler.getInstance(), tree, dumpsInterval * 1000) { 59 protected final ExceptionResultHandler repeater = new ExceptionResultHandler() { 60 61 @Override 62 public void handle(FramsticksException exception) { 63 log.error("caught error during diagnostics fetching (repeating): " + exception); 64 again(); 65 } 66 67 }; 57 68 @Override 58 p ublic void run() {69 protected void runAt() { 59 70 60 71 log.info("starting periodic dump"); 61 new RecursiveFetcher(instance, Path.to(instance, "/"), new StateFunctor() { 62 @Override 63 public void handle(FramsticksException e) { 64 Logging.log(log, "recursively fetch", instance, e); 65 again(); 66 } 72 new RecursiveFetcher(tree, Path.to(tree, "/"), new FutureHandler<Void>(repeater) { 67 73 68 74 @Override 69 p ublic void call() {70 log.info(" instance resolved, saving");75 protected void result(Void result) { 76 log.info("tree resolved, saving"); 71 77 try { 72 final String fileName = dumpsPath + "/" + instance + "_" + new SimpleDateFormat(dumpsFormat).format(new Date()) + ".param";78 final String fileName = dumpsPath + "/" + tree + "_" + new SimpleDateFormat(dumpsFormat).format(new Date()) + ".param"; 73 79 File file = new File(fileName); 74 new SaveStream(new PrintWriterSink(new PrintWriter(new OutputStreamWriter(new FileOutputStream(file), Encoding.getFramsticksCharset()))), instance, Path.to(instance, "/"), new StateFunctor() { 75 @Override 76 public void handle(FramsticksException e) { 77 Logging.log(log, "periodic dump in " + fileName + " of", instance, e); 78 again(); 79 } 80 new SaveStream(new PrintWriterSink(new PrintWriter(new OutputStreamWriter(new FileOutputStream(file), Encoding.getFramsticksCharset()))), tree, Path.to(tree, "/"), new FutureHandler<Void>(repeater) { 80 81 81 82 @Override 82 p ublic void call() {83 protected void result(Void result) { 83 84 again(); 84 85 } 85 86 }); 86 } catch (IOException ex) { 87 log.info("failed to initiate dump: " + ex); 88 again(); 87 } catch (IOException e) { 88 throw new FramsticksException().msg("failed to initiate dump").cause(e); 89 89 } 90 91 90 } 92 91 });
Note: See TracChangeset
for help on using the changeset viewer.