// Drain the queue. public void start() { if (m_employees == null) { return; } for (int i = 0; i < m_lengthQueue; i++) { // Pop an add employee request off the queue string FirstName = m_msgQueue[i, 0]; string MiddleName = m_msgQueue[i, 1]; string LastName = m_msgQueue[i, 2]; string SSN = m_msgQueue[i, 3]; Console.WriteLine("Invoking delegate"); // Create the event arguments to pass to the methods // subscribed to the event and then invoke event resulting // in the callbacks methods being executed, namely // Employees.this.addEmployee() and // EmployeeQueueLogger.logAddRequest() AddEmployeEventArgs args = new AddEmployeEventArgs(FirstName, LastName, MiddleName, SSN); OnAddEmployee(this, args); } }
// Called by event whenever a new add employee message appears // in the message queue. Notice the signature matches that requried // by System.Event public void addEmployee(object sender, AddEmployeEventArgs e) { Console.WriteLine("In delegate, adding employee\r\n"); int index = m_employees.Length; m_employees[index] = new Employee(e.FirstName, e.MiddleName, e.LastName, e.SSN); }
public void logAddRequest(object sender, AddEmployeEventArgs e) { string name = e.FirstName + " " + e.MiddleName + " " + e.LastName; string text = "Adding Employee\n"; text += "EmployeeID: " + e.ID.ToString(); text += ", Name: " + name; log(text); }
// Called by event whenever a new add employee message appears // in the message queue. Notice the signature matches that requried // by System.Event public void addEmployee(object sender, AddEmployeEventArgs e) { Console.WriteLine("In delegate, adding employee\r\n"); Employee employee; if (e.IsSalaried == true) { employee = new SalariedEmployee(e.ID, e.FirstName, e.MiddleName, e.LastName, e.SSN, e.PayRate); } else { employee = new HourlyEmployee(e.ID, e.FirstName, e.MiddleName, e.LastName, e.SSN, e.PayRate); } m_employees.Add(employee); }
// Drain the queue. public void start() { if (m_employees == null) { return; } // Process all queue messages. while (m_queue.moreMessages() == true) { try { EmployeeMessage msg = m_queue.getNextMessage(); if (msg.MessageType == MsgType.Add) { AddEmployeEventArgs args = new AddEmployeEventArgs( (AddEmployeeMessage)msg); OnAddEmployee(this, args); } else { HoursWorkedEventArgs args = new HoursWorkedEventArgs( (PayrollMessage)msg); OnHoursWorked(this, args); } } catch (Exception e) { m_errLogger.logError(e); } } // Now read one more message to see our custom exception // thrown try { EmployeeMessage msg = m_queue.getNextMessage(); } catch (Exception e) { m_errLogger.logError(e); } }
// Called by event whenever a new add employee message appears // in the message queue. Notice the signature matches that requried // by System.Event public void logAddRequest(object sender, AddEmployeEventArgs e) { string name = e.FirstName + " " + e.MiddleName + " " + e.LastName; FileStream stream = new FileStream(m_fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); StreamWriter writer = new StreamWriter(stream); writer.BaseStream.Seek(0, SeekOrigin.End); writer.Write("{0} {1} \n", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString()); writer.Write("Adding employee - Name: {0}, SSN: {1}", name, e.SSN); writer.Write("\n------------------------------------\n\n"); writer.Flush(); writer.Close(); }