コード例 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MessageCollection" /> class.
 /// </summary>
 /// <param name="function">The function.</param>
 public MessageCollection(MessageFunc function)
 {
     this.Function     = function.ThrowIfNull(nameof(function));
     this.HasMoreItems = true;
     this.MessageCache = new List <Message>(2 * MessageCollection.MaxFetchSize);
     this.semaphore    = new SemaphoreSlim(1, 1);
 }
コード例 #2
0
ファイル: LoggerExtensions.cs プロジェクト: nttrdb/Reusable
        private static ILogger Log(
            [NotNull] this ILogger logger,
            [NotNull] LogLevel logLevel,
            [NotNull] MessageFunc messageFunc,
            [NotNull] Func <Log, Log> logFunc
            )
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            if (logLevel == null)
            {
                throw new ArgumentNullException(nameof(logLevel));
            }
            if (messageFunc == null)
            {
                throw new ArgumentNullException(nameof(messageFunc));
            }
            if (logFunc == null)
            {
                throw new ArgumentNullException(nameof(logFunc));
            }

            return(logger.Log(logLevel, log => log.MessageFunc(messageFunc)));
        }
コード例 #3
0
ファイル: MessageHandler.cs プロジェクト: AsehesL/RayTracer
 public void RemoveListener <T1, T2, T3, T4>(MessageName message, MessageFunc <T1, T2, T3, T4> handler)
 {
     if (PreListenerRemoving(message, handler))
     {
         m_messageTable[message] = (MessageFunc <T1, T2, T3, T4>)Delegate.Remove((MessageFunc <T1, T2, T3, T4>)m_messageTable[message], handler);
     }
     PostListenerRemoving(message);
 }
コード例 #4
0
ファイル: MessageHandler.cs プロジェクト: AsehesL/RayTracer
 public void RemoveListener(MessageName message, MessageFunc handler)
 {
     if (PreListenerRemoving(message, handler))
     {
         m_messageTable[message] = (MessageFunc)Delegate.Remove((MessageFunc)m_messageTable[message], handler);
     }
     PostListenerRemoving(message);
 }
コード例 #5
0
ファイル: MessageHandler.cs プロジェクト: AsehesL/RayTracer
        public static void AddListener <T1, T2, T3, T4>(MessageName message, MessageFunc <T1, T2, T3, T4> handler)
        {
            MessageHandler instance = GetInstance();

            if (instance.PreListenerAdding(message, handler))
            {
                instance.m_messageTable[message] = (MessageFunc <T1, T2, T3, T4>)Delegate.Combine((MessageFunc <T1, T2, T3, T4>)instance.m_messageTable[message], handler);
            }
        }
コード例 #6
0
ファイル: MessageHandler.cs プロジェクト: AsehesL/RayTracer
        public static void Broadcast(MessageName message)
        {
            MessageHandler instance = GetInstance();
            Delegate       _delegate;

            if (instance.PreBroadcasting(message, out _delegate))
            {
                if (_delegate == null)
                {
                    return;
                }
                MessageFunc source = instance.m_messageTable[message] as MessageFunc;
                if (source != null)
                {
                    source();
                }
            }
        }
コード例 #7
0
ファイル: MessageHandler.cs プロジェクト: AsehesL/RayTracer
        public void Broadcast <T1, T2, T3, T4>(MessageName message, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
        {
            MessageHandler instance = GetInstance();
            Delegate       _delegate;

            if (instance.PreBroadcasting(message, out _delegate))
            {
                if (_delegate == null)
                {
                    return;
                }
                MessageFunc <T1, T2, T3, T4> source = instance.m_messageTable[message] as MessageFunc <T1, T2, T3, T4>;
                if (source != null)
                {
                    source(arg1, arg2, arg3, arg4);
                }
            }
        }
コード例 #8
0
 public static extern void zfb_setDebugFunc(MessageFunc debugFunc);
コード例 #9
0
ファイル: LoggerExtensions.cs プロジェクト: nttrdb/Reusable
 public static ILogger Fatal(this ILogger logger, MessageFunc messageFunc, Func <Log, Log> logFunc = null)
 {
     return(logger.Log(LogLevel.Fatal, messageFunc, logFunc ?? (_ => _)));
 }
コード例 #10
0
ファイル: LoggerExtensions.cs プロジェクト: nttrdb/Reusable
 public static ILogger Information(this ILogger logger, MessageFunc messageFunc, Func <Log, Log> logFunc = null)
 {
     return(logger.Log(LogLevel.Information, messageFunc, logFunc ?? (_ => _)));
 }
コード例 #11
0
ファイル: Context.cs プロジェクト: iainlane/f-spot
 public MessageFuncWrapper(MessageFunc managed)
 {
     this.managed = managed;
     if (managed != null)
         NativeDelegate = NativeCallback;
 }
コード例 #12
0
ファイル: Context.cs プロジェクト: iainlane/f-spot
 public void SetMessageFunc(MessageFunc func)
 {
     message_func_wrapper = new MessageFuncWrapper (func);
     IntPtr data = IntPtr.Zero;
     if (func != null)
         data = (IntPtr) GCHandle.Alloc (message_func_wrapper);
     gp_context_set_message_func (gluecontext, message_func_wrapper.NativeDelegate, data);
 }
コード例 #13
0
 public static ILogger Error(this ILogger logger, MessageFunc messageFunc, Func <ILog, ILog> logFunc = null)
 {
     return(logger.Log(LogLevel.Error, messageFunc, logFunc ?? (_ => _)));
 }