/[gr2lib]/trunk/gr2lib/core/coretypes/implementation/granny_log_callback_builder.cs
ViewVC logotype

Diff of /trunk/gr2lib/core/coretypes/implementation/granny_log_callback_builder.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 153 by william, Tue Jul 20 10:26:54 2010 UTC revision 156 by william, Thu Jul 22 07:38:36 2010 UTC
# Line 4  using System.Linq; Line 4  using System.Linq;
4  using System.Text;  using System.Text;
5  using gr2lib.core.typedefs;  using gr2lib.core.typedefs;
6  using gr2lib.core.coretypes.native;  using gr2lib.core.coretypes.native;
7    using gr2lib.core.interfaces;
8    using System.Runtime.InteropServices;
9    
10  namespace gr2lib.core.coretypes.implementation  namespace gr2lib.core.coretypes.implementation
11  {  {
12      public class granny_log_eventargs : EventArgs      public class granny_log_eventargs : EventArgs
13      {      {
14          private string message;          private string message;
15          private granny_log_message_type type;          private int type;
16          private granny_log_message_origin origin;          private int origin;
17          private string _type_string;          private string _type_string;
18          private string _origin_string;          private string _origin_string;
19    
20          public granny_log_eventargs(granny_log_message_type type, granny_log_message_origin origin, string message)          public granny_log_eventargs(int type, int origin, string message)
21          {          {
22              this.type = type;              this.type = type;
23              this.origin = origin;              this.origin = origin;
# Line 23  namespace gr2lib.core.coretypes.implemen Line 25  namespace gr2lib.core.coretypes.implemen
25              this._type_string = coreapi.GrannyGetLogMessageTypeString(type);              this._type_string = coreapi.GrannyGetLogMessageTypeString(type);
26              this._origin_string = coreapi.GrannyGetLogMessageOriginString(origin);              this._origin_string = coreapi.GrannyGetLogMessageOriginString(origin);
27          }          }
28          public granny_log_eventargs(granny_log_message_type type, granny_log_message_origin origin, string message, string type_string, string origin_string)          public granny_log_eventargs(int type, int origin, [MarshalAs(UnmanagedType.LPStr)] string message, string type_string, string origin_string)
29          {          {
30              this.type = type;              this.type = type;
31              this.origin = origin;              this.origin = origin;
# Line 32  namespace gr2lib.core.coretypes.implemen Line 34  namespace gr2lib.core.coretypes.implemen
34              this._origin_string = origin_string;              this._origin_string = origin_string;
35          }          }
36    
37          public granny_log_message_type Type { get { return type; } }          public int Type { get { return type; } }
38          public granny_log_message_origin Origin { get { return origin; } }          public int Origin { get { return origin; } }
39    
40          public string TypeString { get { return _type_string; } }          public string TypeString { get { return _type_string; } }
41          public string OriginString { get { return _origin_string; } }          public string OriginString { get { return _origin_string; } }
42          public string Message { get { return message; } }          public string Message { get { return message; } }
43      }      }
44    
45      public class granny_log_callback_builder      public class granny_log_callback_builder : igranny_log_callback_builder
46      {      {
47    
48          public delegate void OnMessageLogged(object sender, granny_log_eventargs e);          public delegate void OnMessageLogged(object sender, granny_log_eventargs e);
49          public event OnMessageLogged OnMessageLoggedEventHandler;          public event OnMessageLogged OnMessageLoggedEventHandler;
50    
51          private void LogCallback(granny_log_message_type Type, granny_log_message_origin Origin, string Message, IntPtr UserData)          internal granny_log_callback _log_call_back;
52            private coreapi.granny_log_callback_method _callback = null;
53    
54            private void LogCallback(int Type, int Origin, [MarshalAs(UnmanagedType.LPStr)] string Message, IntPtr UserData)
55          {          {
56              string TypeString = coreapi.GrannyGetLogMessageTypeString(Type);              string TypeString = coreapi.GrannyGetLogMessageTypeString(Type);
57              string OriginString = coreapi.GrannyGetLogMessageOriginString(Origin);              string OriginString = coreapi.GrannyGetLogMessageOriginString(Origin);
# Line 57  namespace gr2lib.core.coretypes.implemen Line 62  namespace gr2lib.core.coretypes.implemen
62              Console.WriteLine("\tMessage Log Type: {0}\n\tMessage Log Origin: {1}\n\tMessage: {2}", TypeString, OriginString, Message);              Console.WriteLine("\tMessage Log Type: {0}\n\tMessage Log Origin: {1}\n\tMessage: {2}", TypeString, OriginString, Message);
63              Console.WriteLine();              Console.WriteLine();
64    
65              //if (OnMessageLoggedEventHandler != null)              if (OnMessageLoggedEventHandler != null)
66              //{              {
67              //    OnMessageLoggedEventHandler(this, new granny_log_eventargs(Type, Origin, Message));                  OnMessageLoggedEventHandler(this, new granny_log_eventargs(Type, Origin, Message));
68              //}              }
69                //GC.KeepAlive(this);
70          }          }
71    
72          public granny_log_callback_builder() { }          public granny_log_callback_builder() { _callback = new coreapi.granny_log_callback_method(this.LogCallback); }
73            //public granny_log_callback_builder(coreapi.granny_log_callback_method LogCallBack) { this._callback = LogCallBack; }
74          public granny_log_callback_builder(OnMessageLogged OnMessageLoggedEventHandler) { this.OnMessageLoggedEventHandler = OnMessageLoggedEventHandler; }          public granny_log_callback_builder(OnMessageLogged OnMessageLoggedEventHandler) { this.OnMessageLoggedEventHandler = OnMessageLoggedEventHandler; }
75          public void StartLogging()          public void StartLogging()
76          {          {
77              try              try
78              {              {
79                  granny_log_callback _log_call_back = new granny_log_callback();                  _log_call_back = new granny_log_callback();
80                  coreapi.granny_log_callback_method _granny_log_callback_method = new coreapi.granny_log_callback_method(this.LogCallback);                  unsafe
81                  _log_call_back.Function = _granny_log_callback_method;                  {
82                  _log_call_back.UserData = IntPtr.Zero;                      coreapi.granny_log_callback_method _granny_log_callback_method = new coreapi.granny_log_callback_method(this.LogCallback);
83    
84                        //IntPtr _granny_log_callback_methodPtr = Marshal.GetFunctionPointerForDelegate(_granny_log_callback_method);
85                        //_log_call_back.Function = _granny_log_callback_methodPtr;
86                        _log_call_back.Function = _granny_log_callback_method;
87    
88                        _log_call_back.UserData = IntPtr.Zero;
89                    }
90    
91                    //int _log_call_back_size = Marshal.SizeOf(_log_call_back);
92                    //IntPtr _log_call_backPtr = Marshal.AllocHGlobal(_log_call_back_size);
93                    //Marshal.StructureToPtr(_log_call_back_size, _log_call_backPtr, true);
94    
95                  coreapi.GrannySetLogCallback(ref _log_call_back);                  coreapi.GrannySetLogCallback(ref _log_call_back);
96                  Console.WriteLine("Granny2 API Logger: {0}", "Activated");                  Console.WriteLine("Granny2 API Logger: {0}", "Activated");
97              }              }
# Line 84  namespace gr2lib.core.coretypes.implemen Line 103  namespace gr2lib.core.coretypes.implemen
103          }          }
104          public void StopLogging()          public void StopLogging()
105          {          {
106               try              try
107                {
108                    _log_call_back = new granny_log_callback();
109                    unsafe
110                    {
111                        coreapi.granny_log_callback_method _granny_log_callback_method = new coreapi.granny_log_callback_method(this.LogCallback);
112    
113                        //IntPtr _granny_log_callback_methodPtr = Marshal.GetFunctionPointerForDelegate(_granny_log_callback_method);
114                        //_log_call_back.Function = _granny_log_callback_methodPtr;
115                        _log_call_back.Function = _granny_log_callback_method;
116    
117                        _log_call_back.UserData = IntPtr.Zero;
118                    }
119    
120    
121                    //int _log_call_back_size = Marshal.SizeOf(_log_call_back);
122                    //IntPtr _log_call_backPtr = Marshal.AllocHGlobal(_log_call_back_size);
123                    //Marshal.StructureToPtr(_log_call_back_size, _log_call_backPtr, true);
124    
125                    coreapi.GrannySetLogCallback(ref _log_call_back);
126                    Console.WriteLine("Granny2 API Logger: {0}", "Deactivated");
127                }
128                catch
129              {              {
130              granny_log_callback _log_call_back = new granny_log_callback();                  Console.WriteLine("Granny2 API Logger: {0}", "Not Deactivated");
             coreapi.granny_log_callback_method _granny_log_callback_method = null;  
             _log_call_back.Function = _granny_log_callback_method;  
             _log_call_back.UserData = IntPtr.Zero;  
             coreapi.GrannySetLogCallback(ref _log_call_back);  
             Console.WriteLine("Granny2 API Logger: {0}", "Deactivated");  
131              }              }
              catch  
              {  
                  Console.WriteLine("Granny2 API Logger: {0}", "Not Deactivated");  
              }  
132          }          }
133    
134      }      }

Legend:
Removed from v.153  
changed lines
  Added in v.156

  ViewVC Help
Powered by ViewVC 1.1.22