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