MDNS/src/include/Network/Mdns/Service.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * Service.h
8  *
9  ****/
10 
11 #pragma once
12 
13 #include "Request.h"
14 #include <Data/LinkedObjectList.h>
15 #include <Data/CStringArray.h>
16 #include <WString.h>
17 
18 namespace mDNS
19 {
23 DECLARE_FSTR(fstrDotLocal)
24 
25 class Responder;
26 
33 class Service : public LinkedObjectTemplate<Service>
34 {
35 public:
37 
38  enum class Protocol {
39  Udp,
40  Tcp,
41  };
42 
46  virtual String getInstance()
47  {
48  return F("Sming");
49  }
50 
54  virtual String getName()
55  {
56  return F("http");
57  }
58 
63  {
64  return Protocol::Tcp;
65  }
66 
70  virtual uint16_t getPort()
71  {
72  return 80;
73  };
74 
81  virtual void addText(mDNS::Resource::TXT& txt)
82  {
83  }
84 
91 
99 
100  // Cache certain data to improve performance
101  struct Host {
104  };
105 
106  bool handleQuestion(Question& question, const Host& host, Request& reply);
107 };
108 
109 } // namespace mDNS
110 
String toString(mDNS::Service::Protocol protocol)
#define F(string_literal)
Wrap a string literal stored in flash and access it using a String object.
Definition: WString.h:113
Base class template for linked items with type casting.
Definition: LinkedObject.h:62
The String class.
Definition: WString.h:137
A single mDNS Question.
Definition: Question.h:26
Definition: MDNS/src/include/Network/Mdns/Request.h:18
'TXT' record containing attribute list
Definition: Resource.h:126
Describes a basic service.
Definition: MDNS/src/include/Network/Mdns/Service.h:34
virtual String getInstance()
User-friendly Instance name.
Definition: MDNS/src/include/Network/Mdns/Service.h:46
virtual String getName()
Identifies what the service does.
Definition: MDNS/src/include/Network/Mdns/Service.h:54
Protocol
Definition: MDNS/src/include/Network/Mdns/Service.h:38
String getServiceName()
Get advertised service name (without the instance)
virtual uint16_t getPort()
Which port to access service on.
Definition: MDNS/src/include/Network/Mdns/Service.h:70
bool handleQuestion(Question &question, const Host &host, Request &reply)
virtual Protocol getProtocol()
Which protocol the service uses.
Definition: MDNS/src/include/Network/Mdns/Service.h:62
virtual void addText(mDNS::Resource::TXT &txt)
Override to obtain txt items.
Definition: MDNS/src/include/Network/Mdns/Service.h:81
String getInstanceName()
Get advertised service instance name.
void getServiceName(String &s)
#define DECLARE_FSTR(name)
Declare a global FSTR::String& reference.
Definition: String.hpp:63
Definition: Streams.h:25
Definition: Answer.h:18
String nameWithDomain
Definition: MDNS/src/include/Network/Mdns/Service.h:103
String name
Definition: MDNS/src/include/Network/Mdns/Service.h:102