コード例 #1
0
ファイル: RabitManager.cs プロジェクト: rdireen/rabitcsharp
        /// <summary>
        /// RabitManager constructor.  Creates the manager's thread.
        /// If the user has derived their own Workspace from the RabitWorkspace,
        /// it must be provided when the manager is constructed... otherwise
        /// the standard RabitWorkspace will be used.
        /// </summary>
        public RabitManager()
        {
            //Generate the Manager Name for use in tracking error messages.
            //and setting up queue names.
            managerName = this.GetType().ToString();
            int idx = managerName.LastIndexOf('.');

            managerName = managerName.Substring(idx + 1);

            managerThread      = new Thread(new ThreadStart(managerMain));
            managerThread.Name = managerName;
            shutdownManager    = false;

            MgrStatus = new ManagerStatusMessage();
            //Add all publish subscribe messages this manager relies on to the
            //global workspace here
            string mgrStatusMsgName = string.Concat(ManagerName, "Status");

            AddPublishSubscribeMessage(mgrStatusMsgName, MgrStatus);

            MgrControl = new ManagerControlMessage();
            AddPublishSubscribeMessage("ManagerControl", MgrControl);

            //string mgrMsgQueueName = string.Concat(ManagerName, "MessageQueue");
            MgrMessageQueue = new RabitMessageQueue(100, ManagerName);
            //Add the Message Queue to the Global Workspace
            AddManagerMessageQueue(ManagerName, MgrMessageQueue);

            //Setup Event Handling
            ewhWaitHandle      = new EventWaitHandle(false, EventResetMode.AutoReset);
            wakeupManagerEvent = new PublishSubscribeMessChangedHandler(wakeUpManagerEH);
        }
コード例 #2
0
ファイル: RabitMessage.cs プロジェクト: rdireen/rabitcsharp
 /// <summary>
 /// Unregister a delegate event function.
 /// </summary>
 /// <param name="delegateFunction"></param>
 public void UnregisterDelegateWithGlobalMessage(PublishSubscribeMessChangedHandler delegateFunction)
 {
     if (globalPublishSubscribeMessageRef != null)
     {
         globalPublishSubscribeMessageRef.UnregisterEvent(delegateFunction);
     }
     else
     {
         Console.WriteLine("Attempting to unregisterDelegateWithGlobalMessage without a reference to the global message established.");
     }
 }
コード例 #3
0
ファイル: RabitWorkspace.cs プロジェクト: rdireen/rabitcsharp
        /// <summary>
        /// A manager can register a message queue pick up event if the manager
        /// needs to know when a message has been picked up by the receiving queue.
        /// Registering events should be done in the Manager's startup code.
        /// </summary>
        /// <param name="queueName"></param>
        /// <param name="delegateFunction"></param>
        /// <returns></returns>
        public bool RegisterMsgPickedUpEvent(string queueName, PublishSubscribeMessChangedHandler delegateFunction)
        {
            bool error = true;
            RabitMessageQueue msgQueue = null;

            if (messageQueueDict.TryGetValue(queueName, out msgQueue))
            {
                msgQueue.RegisterMsgPickedUpEvent(delegateFunction);
                error = false;
            }
            return(error);
        }
コード例 #4
0
 public void RegisterEvent(PublishSubscribeMessChangedHandler delegateFunction)
 {
     rwl.EnterWriteLock();
     Changed += delegateFunction;
     rwl.ExitWriteLock();
 }
コード例 #5
0
 public void UnregisterEvent(PublishSubscribeMessChangedHandler delegateFunction)
 {
     Changed -= delegateFunction;
 }
コード例 #6
0
 public void UnregisterMsgPickedEvent(PublishSubscribeMessChangedHandler delegateFunction)
 {
     MessagePickedUp -= delegateFunction;
 }
コード例 #7
0
ファイル: RabitManager.cs プロジェクト: rdireen/rabitcsharp
 /// <summary>
 /// A manager can register a message queue pick up event if the manager
 /// needs to know when a message has been picked up by the receiving queue.
 /// Registering events should be done in the Manager's startup code.
 /// </summary>
 /// <param name="queueName"></param>
 /// <param name="delegateFunction"></param>
 /// <returns></returns>
 public bool RegisterMsgPickedUpEvent(string queueName, PublishSubscribeMessChangedHandler delegateFunction)
 {
     return(RabitWorkspace.GetWorkspace().RegisterMsgPickedUpEvent(queueName, delegateFunction));
 }