GLPK for C#/CLI  1.10.0
GlpkCallback.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Threading;
4 
5 namespace org.gnu.glpk {
6 
18  public class GlpkCallback {
19 
23  private static ThreadLocal<LinkedList<IGlpkCallbackListener>> listeners
24  = new ThreadLocal<LinkedList<IGlpkCallbackListener>> (() =>
25  {
26  return new LinkedList<IGlpkCallbackListener>();
27  });
28 
32  private GlpkCallback() {
33  }
34 
39  public static void callback(IntPtr cPtr) {
40  glp_tree tree;
41  tree = new glp_tree(cPtr, false);
42  foreach (IGlpkCallbackListener listener in listeners.Value) {
43  listener.callback(tree);
44  }
45  }
46 
51  public static void addListener(IGlpkCallbackListener listener) {
52  listeners.Value.AddLast(listener);
53  }
54 
60  public static bool removeListener(IGlpkCallbackListener listener) {
61  if (listeners.Value.Contains(listener)) {
62  listeners.Value.Remove(listener);
63  return true;
64  } else {
65  return false;
66  }
67  }
68  }
69 }
static void addListener(IGlpkCallbackListener listener)
Adds a listener for callbacks.
Definition: GlpkCallback.cs:51
static bool removeListener(IGlpkCallbackListener listener)
Removes first occurance of a listener for callbacks.
Definition: GlpkCallback.cs:60
static void callback(IntPtr cPtr)
Callback method called by native library.
Definition: GlpkCallback.cs:39
This class manages callbacks from the MIP solver.
Definition: GlpkCallback.cs:18
void callback(glp_tree tree)
Method call by the GLPK MIP solver in the branch-and-cut algorithm.