Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
BasicServer.h
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4#ifndef _Stroika_Frameworks_UPnP_SSDP_Server_BasicServer_h_
5#define _Stroika_Frameworks_UPnP_SSDP_Server_BasicServer_h_ 1
6
7#include "Stroika/Frameworks/StroikaPreComp.h"
8
10#include "Stroika/Foundation/Common/Common.h"
11
12#include "Stroika/Frameworks/UPnP/Device.h"
13#include "Stroika/Frameworks/UPnP/DeviceDescription.h"
14#include "Stroika/Frameworks/UPnP/SSDP/Server/PeriodicNotifier.h"
15#include "Stroika/Frameworks/UPnP/SSDP/Server/SearchResponder.h"
16
17/*
18 * \file
19 *
20 * \note Code-Status: <a href="Code-Status.md#Alpha">Alpha</a>
21 *
22 * TODO:
23 * @todo Support SSDP::bye - sending going down notificaiton!!!
24 *
25 * @todo Add serviceList support
26 *
27 * @todo Look at http://brisa.garage.maemo.org/doc/html/upnp/ssdp.html for example server API
28 */
29
30namespace Stroika::Frameworks::UPnP::SSDP::Server {
31
32 /**
33 * \brief handle the multicast part of UPnP SSDP - listening for searches and sending periodic notifications
34 *
35 * When this object is instantiated, it fires off threads to notify and respond to
36 * searches. When it is destroyed, it stops doing that.
37 *
38 * \note Caller must separately handle the HTTP requests for device discovery (see SSDP server sample)
39 *
40 * \note (since Stroika v3)requires Execution::IntervalTimer::Manager::Activator intervalTimerMgrActivator
41 */
43 public:
44 using FrequencyInfo = PeriodicNotifier::FrequencyInfo;
45
46 public:
47 /*
48 * if the HOST part of d.fLocation is empty, it will dynamically be populated with the hosts primary IP address
49 * see IO::Network::GetPrimaryInternetAddress () - when the server broadcasts it
50 */
51 BasicServer (const BasicServer&) = delete;
52 BasicServer (const Device& d, const DeviceDescription& dd, const FrequencyInfo& fi = FrequencyInfo{},
53 IO::Network::InternetProtocol::IP::IPVersionSupport ipVersion = IO::Network::InternetProtocol::IP::IPVersionSupport::eDEFAULT);
54 const BasicServer& operator= (const BasicServer&) = delete;
55
56 private:
57 class Rep_;
58 shared_ptr<Rep_> fRep_;
59 };
60
61}
62
63/*
64 ********************************************************************************
65 ***************************** Implementation Details ***************************
66 ********************************************************************************
67 */
68#include "BasicServer.inl"
69
70#endif /*_Stroika_Frameworks_UPnP_SSDP_Server_BasicServer_h_*/
handle the multicast part of UPnP SSDP - listening for searches and sending periodic notifications
Definition BasicServer.h:42