VirtualBox

source: vbox/trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h@ 14959

Last change on this file since 14959 was 14949, checked in by vboxsync, 16 years ago

Appended vim modeline to set tabstop and expand tabs (in the way
suggested by our coding guidelines).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.8 KB
Line 
1/* $Id: HostNetworkInterfaceImpl.h 14949 2008-12-03 15:17:16Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox COM class implementation
6 */
7
8/*
9 * Copyright (C) 2006-2008 Sun Microsystems, Inc.
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.virtualbox.org. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License (GPL) as published by the Free Software
15 * Foundation, in version 2 as it comes in the "COPYING" file of the
16 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
20 * Clara, CA 95054 USA or visit http://www.sun.com if you need
21 * additional information or have any questions.
22 */
23
24#ifndef ____H_HOSTNETWORKINTERFACEIMPL
25#define ____H_HOSTNETWORKINTERFACEIMPL
26
27#include "VirtualBoxBase.h"
28#include "Collection.h"
29
30class ATL_NO_VTABLE HostNetworkInterface :
31 public VirtualBoxBaseNEXT,
32 public VirtualBoxSupportErrorInfoImpl <HostNetworkInterface, IHostNetworkInterface>,
33 public VirtualBoxSupportTranslation <HostNetworkInterface>,
34 public IHostNetworkInterface
35{
36public:
37
38 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (HostNetworkInterface)
39
40 DECLARE_NOT_AGGREGATABLE (HostNetworkInterface)
41
42 DECLARE_PROTECT_FINAL_CONSTRUCT()
43
44 BEGIN_COM_MAP (HostNetworkInterface)
45 COM_INTERFACE_ENTRY (ISupportErrorInfo)
46 COM_INTERFACE_ENTRY (IHostNetworkInterface)
47 END_COM_MAP()
48
49 NS_DECL_ISUPPORTS
50
51 DECLARE_EMPTY_CTOR_DTOR (HostNetworkInterface)
52
53 HRESULT FinalConstruct();
54 void FinalRelease();
55
56 // public initializer/uninitializer for internal purposes only
57 HRESULT init (Bstr interfaceName, Guid guid);
58
59 // IHostNetworkInterface properties
60 STDMETHOD(COMGETTER(Name)) (BSTR *aInterfaceName);
61 STDMETHOD(COMGETTER(Id)) (GUIDPARAMOUT aGuid);
62
63 // for VirtualBoxSupportErrorInfoImpl
64 static const wchar_t *getComponentName() { return L"HostNetworkInterface"; }
65
66private:
67 const Bstr mInterfaceName;
68 const Guid mGuid;
69};
70
71COM_DECL_READONLY_ENUM_AND_COLLECTION_BEGIN (HostNetworkInterface)
72
73 STDMETHOD(FindByName) (INPTR BSTR name, IHostNetworkInterface **networkInterface)
74 {
75 if (!name)
76 return E_INVALIDARG;
77 if (!networkInterface)
78 return E_POINTER;
79
80 *networkInterface = NULL;
81 Vector::value_type found;
82 Vector::iterator it = vec.begin();
83 while (it != vec.end() && !found)
84 {
85 Bstr n;
86 (*it)->COMGETTER(Name) (n.asOutParam());
87 if (n == name)
88 found = *it;
89 ++ it;
90 }
91
92 if (!found)
93 return setError (E_INVALIDARG, HostNetworkInterfaceCollection::tr (
94 "The host network interface with the given name could not be found"));
95
96 return found.queryInterfaceTo (networkInterface);
97 }
98
99 STDMETHOD(FindById) (INPTR GUIDPARAM id, IHostNetworkInterface **networkInterface)
100 {
101 if (Guid(id).isEmpty())
102 return E_INVALIDARG;
103 if (!networkInterface)
104 return E_POINTER;
105
106 *networkInterface = NULL;
107 Vector::value_type found;
108 Vector::iterator it = vec.begin();
109 while (it != vec.end() && !found)
110 {
111 Guid g;
112 (*it)->COMGETTER(Id) (g.asOutParam());
113 if (g == Guid(id))
114 found = *it;
115 ++ it;
116 }
117
118 if (!found)
119 return setError (E_INVALIDARG, HostNetworkInterfaceCollection::tr (
120 "The host network interface with the given GUID could not be found"));
121
122 return found.queryInterfaceTo (networkInterface);
123 }
124
125
126COM_DECL_READONLY_ENUM_AND_COLLECTION_END (HostNetworkInterface)
127
128
129#endif // ____H_H_HOSTNETWORKINTERFACEIMPL
130/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette