xref: /haiku/src/kits/debugger/target_host_interface/network/NetworkTargetHostInterfaceInfo.cpp (revision 692fe5550319c0342c9525e674b7f10105d977ee)
1 /*
2  * Copyright 2016, Rene Gollent, rene@gollent.com.
3  * Distributed under the terms of the MIT License.
4  */
5 #include "NetworkTargetHostInterfaceInfo.h"
6 
7 #include <AutoDeleter.h>
8 
9 #include "NetworkTargetHostInterface.h"
10 #include "SettingsDescription.h"
11 #include "Setting.h"
12 
13 
14 static const char* kHostnameSetting = "hostname";
15 static const char* kPortSetting = "port";
16 
17 
18 NetworkTargetHostInterfaceInfo::NetworkTargetHostInterfaceInfo()
19 	:
20 	TargetHostInterfaceInfo("Network"),
21 	fDescription(NULL)
22 {
23 }
24 
25 
26 NetworkTargetHostInterfaceInfo::~NetworkTargetHostInterfaceInfo()
27 {
28 	delete fDescription;
29 }
30 
31 
32 status_t
33 NetworkTargetHostInterfaceInfo::Init()
34 {
35 	fDescription = new(std::nothrow) SettingsDescription;
36 	if (fDescription == NULL)
37 		return B_NO_MEMORY;
38 
39 	Setting* setting = new(std::nothrow) StringSettingImpl(kHostnameSetting,
40 		"Hostname", "");
41 	if (setting == NULL)
42 		return B_NO_MEMORY;
43 	ObjectDeleter<Setting> settingDeleter(setting);
44 	if (!fDescription->AddSetting(setting))
45 		return B_NO_MEMORY;
46 
47 	settingDeleter.Detach();
48 	setting = new(std::nothrow) BoundedSettingImpl(kPortSetting, "Port",
49 		(uint16)0, (uint16)65535, (uint16)8305);
50 	if (setting == NULL)
51 		return B_NO_MEMORY;
52 	if (!fDescription->AddSetting(setting)) {
53 		delete setting;
54 		return B_NO_MEMORY;
55 	}
56 
57 	return B_OK;
58 }
59 
60 
61 bool
62 NetworkTargetHostInterfaceInfo::IsLocal() const
63 {
64 	return false;
65 }
66 
67 
68 bool
69 NetworkTargetHostInterfaceInfo::IsConfigured(Settings* settings) const
70 {
71 	return true;
72 }
73 
74 
75 SettingsDescription*
76 NetworkTargetHostInterfaceInfo::GetSettingsDescription() const
77 {
78 	return fDescription;
79 }
80 
81 
82 status_t
83 NetworkTargetHostInterfaceInfo::CreateInterface(Settings* settings,
84 	TargetHostInterface*& _interface) const
85 {
86 	NetworkTargetHostInterface* interface
87 		= new(std::nothrow) NetworkTargetHostInterface;
88 	if (interface == NULL)
89 		return B_NO_MEMORY;
90 
91 	status_t error = interface->Init(settings);
92 	if (error != B_OK) {
93 		delete interface;
94 		return error;
95 	}
96 
97 	_interface = interface;
98 	return B_OK;
99 }
100 
101