public override void Process(CmdTrigger <RealmServerCmdArgs> trigger) { string playerName = trigger.Text.NextWord(); Character argumentOrTarget = trigger.Args.GetCharArgumentOrTarget(trigger, playerName); ITicketHandler ticketHandler = trigger.Args.TicketHandler; if (argumentOrTarget != null && argumentOrTarget.IsInWorld) { Ticket ticket = argumentOrTarget.Ticket; ITicketHandler handler = ticket.Handler; if (handler != null && handler.Role > ticketHandler.Role) { trigger.Reply("Ticket is already being handled by: " + handler.Name); } else { if (handler != null) { trigger.Reply("Taking over Ticket from: " + handler.Name); handler.SendMessage("The Ticket you were handling by " + (object)ticket.Owner + " is now handled by: " + (object)ticketHandler); } ticket.Handler = ticketHandler; } } else { trigger.Reply("Selected player is offline or does not exist: " + playerName); } }
public Ticket HandleNextUnhandledTicket(ITicketHandler handler) { Ticket ticket; do { ticket = GetNextUnhandledTicket(handler); if (ticket != null) { lck.EnterWriteLock(); try { if (ticket.Handler == null) { ticket.SetHandlerUnlocked(handler); break; } // Ticket got handled in the very short time in which the lock was released -> continue } finally { lck.ExitWriteLock(); } } } while (ticket != null); return(ticket); }
public Ticket HandleNextUnhandledTicket(ITicketHandler handler) { Ticket nextUnhandledTicket; do { nextUnhandledTicket = GetNextUnhandledTicket(handler); if (nextUnhandledTicket != null) { lck.EnterWriteLock(); try { if (nextUnhandledTicket.Handler == null) { nextUnhandledTicket.SetHandlerUnlocked(handler); break; } } finally { lck.ExitWriteLock(); } } } while(nextUnhandledTicket != null); return(nextUnhandledTicket); }
public bool HandleTicket(ITicketHandler handler, Ticket ticket) { if (handler.MayHandle(ticket)) { ticket.Handler = handler; return(true); } return(false); }
internal void SetHandlerUnlocked(ITicketHandler handler) { if (m_handler != handler) { var oldHandler = m_handler; m_handler = handler; if (handler != null) { handler.HandlingTicket = this; } var evt = TicketHandlerChanged; if (evt != null) { evt(this, oldHandler); } } }
public void Delete() { TicketMgr.Instance.lck.EnterWriteLock(); try { if (m_previous != null) { m_previous.m_next = m_next; } if (m_next != null) { m_next.m_previous = m_previous; } var mgr = TicketMgr.Instance; if (this == mgr.first) { mgr.first = null; } if (this == mgr.last) { mgr.last = null; } if (m_handler != null) { m_handler.HandlingTicket = null; m_handler = null; } if (m_owner != null) { m_owner.Ticket = null; } TicketMgr.Instance.ticketsById.Remove(m_charId); } finally { TicketMgr.Instance.lck.ExitWriteLock(); } }
/// <summary> /// /// </summary> /// <param name="handler">May be null</param> /// <returns>Returns the next Ticket that is not already handled and may be handled by the given handler.</returns> public Ticket GetNextUnhandledTicket(ITicketHandler handler) { lck.EnterReadLock(); try { for (Ticket ticket = first; ticket != null; ticket = ticket.Next) { if (handler == null || handler.MayHandle(ticket)) { return(ticket); } } } finally { lck.ExitReadLock(); } return(null); }
internal void SetHandlerUnlocked(ITicketHandler handler) { if (this.m_handler == handler) { return; } ITicketHandler handler1 = this.m_handler; this.m_handler = handler; if (handler != null) { handler.HandlingTicket = this; } Ticket.TicketHandlerChangedHandler ticketHandlerChanged = this.TicketHandlerChanged; if (ticketHandlerChanged == null) { return; } ticketHandlerChanged(this, handler1); }
/// <summary> /// /// </summary> /// <param name="handler">May be null</param> /// <returns>Returns the next Ticket that is not already handled and may be handled by the given handler.</returns> public Ticket GetNextUnhandledTicket(ITicketHandler handler) { lck.EnterReadLock(); try { var current = first; while (current != null) { if (handler == null || handler.MayHandle(current)) { return(current); } current = current.Next; } } finally { lck.ExitReadLock(); } return(null); }
public void Delete() { TicketMgr.Instance.lck.EnterWriteLock(); try { if (this.m_previous != null) { this.m_previous.m_next = this.m_next; } if (this.m_next != null) { this.m_next.m_previous = this.m_previous; } TicketMgr instance = TicketMgr.Instance; if (this == instance.first) { instance.first = (Ticket)null; } if (this == instance.last) { instance.last = (Ticket)null; } if (this.m_handler != null) { this.m_handler.HandlingTicket = (Ticket)null; this.m_handler = (ITicketHandler)null; } if (this.m_owner != null) { this.m_owner.Ticket = (Ticket)null; } TicketMgr.Instance.ticketsById.Remove(this.m_charId); } finally { TicketMgr.Instance.lck.ExitWriteLock(); } }
internal void OnOwnerLogout() { TicketMgr.Instance.lck.EnterWriteLock(); try { Position = m_owner.Position; m_Map = m_owner.Map; Phase = m_owner.Phase; m_owner = null; ITicketHandler handler = m_handler; if (handler == null) { return; } handler.SendMessage("Owner of the Ticket you are handling went -{0}-.", (object)ChatUtility.Colorize("offline", Color.Red)); } finally { TicketMgr.Instance.lck.ExitWriteLock(); } }
public TicketController(ITicketHandler ticketHandler, IBaseHandler<ProductDomain> productHandler, ICurrentUser currentUser) { _ticketHandler = ticketHandler; _productHandler = productHandler; _currentUser = currentUser; }
/// <summary> /// Initializes a new instance of the <see cref="UserController"/> class. /// </summary> /// <param name="htmlResponseBuilder"> /// The html response builder. /// </param> /// <param name="ticketHandler"> /// The user handler. /// </param> public TicketController(IHtmlResponseBuilder htmlResponseBuilder, ITicketHandler ticketHandler) { _htmlResponseBuilder = htmlResponseBuilder; _ticketHandler = ticketHandler; }
public ProductController(IBaseHandler <ProductDomain> productHandler, IBaseHandler <CustomerDomain> customerHandler, ITicketHandler ticketHandler) { _productHandler = productHandler; _customerHandler = customerHandler; _ticketHandler = ticketHandler; }
public ProductController(IBaseHandler<ProductDomain> productHandler, IBaseHandler<CustomerDomain> customerHandler, ITicketHandler ticketHandler) { _productHandler = productHandler; _customerHandler = customerHandler; _ticketHandler = ticketHandler; }
public TicketController(ITicketHandler ticketHandler, IBaseHandler <ProductDomain> productHandler, ICurrentUser currentUser) { _ticketHandler = ticketHandler; _productHandler = productHandler; _currentUser = currentUser; }
public QueueController(ITicketHandler ticketHandler) { _ticketHandler = ticketHandler; }