Hardware/SensorVisitor.cs
author moel.mich
Sat, 31 Dec 2011 17:31:04 +0000
changeset 324 c6ee430d6995
parent 182 4801e9eaf979
child 344 3145aadca3d2
permissions -rw-r--r--
Modified and extended version of the patch v4 by Roland Reinl (see Issue 256). Main differences to the original patch: DeviceIoControl refactorings removed, SmartAttribute is now descriptive only and does not hold any state, report is written as one 80 columns table, sensors are created only for meaningful values and without duplicates (remaining life, temperatures, host writes and reads). Also the current implementation should really preserve all the functionality of the old system. Additionally there is now a simple SMART devices emulation class (DebugSmart) that can be used in place of WindowsSmart for testing with reported data.
moel@161
     1
/*
moel@161
     2
  
moel@161
     3
  Version: MPL 1.1/GPL 2.0/LGPL 2.1
moel@161
     4
moel@161
     5
  The contents of this file are subject to the Mozilla Public License Version
moel@161
     6
  1.1 (the "License"); you may not use this file except in compliance with
moel@161
     7
  the License. You may obtain a copy of the License at
moel@161
     8
 
moel@161
     9
  http://www.mozilla.org/MPL/
moel@161
    10
moel@161
    11
  Software distributed under the License is distributed on an "AS IS" basis,
moel@161
    12
  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
moel@161
    13
  for the specific language governing rights and limitations under the License.
moel@161
    14
moel@161
    15
  The Original Code is the Open Hardware Monitor code.
moel@161
    16
moel@161
    17
  The Initial Developer of the Original Code is 
moel@161
    18
  Michael Möller <m.moeller@gmx.ch>.
moel@161
    19
  Portions created by the Initial Developer are Copyright (C) 2009-2010
moel@161
    20
  the Initial Developer. All Rights Reserved.
moel@161
    21
moel@161
    22
  Contributor(s):
moel@161
    23
moel@161
    24
  Alternatively, the contents of this file may be used under the terms of
moel@161
    25
  either the GNU General Public License Version 2 or later (the "GPL"), or
moel@161
    26
  the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
moel@161
    27
  in which case the provisions of the GPL or the LGPL are applicable instead
moel@161
    28
  of those above. If you wish to allow use of your version of this file only
moel@161
    29
  under the terms of either the GPL or the LGPL, and not to allow others to
moel@161
    30
  use your version of this file under the terms of the MPL, indicate your
moel@161
    31
  decision by deleting the provisions above and replace them with the notice
moel@161
    32
  and other provisions required by the GPL or the LGPL. If you do not delete
moel@161
    33
  the provisions above, a recipient may use your version of this file under
moel@161
    34
  the terms of any one of the MPL, the GPL or the LGPL.
moel@161
    35
 
moel@161
    36
*/
moel@161
    37
moel@161
    38
using System;
moel@161
    39
using System.Collections.Generic;
moel@161
    40
moel@161
    41
namespace OpenHardwareMonitor.Hardware {
moel@161
    42
moel@161
    43
  public class SensorVisitor : IVisitor {
moel@195
    44
    private readonly SensorEventHandler handler;
moel@161
    45
moel@161
    46
    public SensorVisitor(SensorEventHandler handler) {
moel@167
    47
      if (handler == null)
moel@167
    48
        throw new ArgumentNullException("handler");
moel@161
    49
      this.handler = handler;
moel@161
    50
    }
moel@161
    51
moel@161
    52
    public void VisitComputer(IComputer computer) {
moel@167
    53
      if (computer == null)
moel@167
    54
        throw new ArgumentNullException("computer");
moel@161
    55
      computer.Traverse(this);
moel@161
    56
    }
moel@161
    57
moel@161
    58
    public void VisitHardware(IHardware hardware) {
moel@167
    59
      if (hardware == null)
moel@167
    60
        throw new ArgumentNullException("hardware");
moel@161
    61
      hardware.Traverse(this);
moel@161
    62
    }
moel@161
    63
moel@161
    64
    public void VisitSensor(ISensor sensor) {
moel@161
    65
      handler(sensor);
moel@161
    66
    }
moel@161
    67
moel@161
    68
    public void VisitParameter(IParameter parameter) { }
moel@161
    69
  }
moel@161
    70
}