示例#1
0
    // 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);
        }
    }
示例#2
0
    // 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);
    }
示例#3
0
    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);
    }
示例#4
0
    // 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);
    }
示例#5
0
    // 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);
        }
    }
示例#6
0
    // 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();
    }