26#include <sys/socket.h>
27#include <netinet/in.h>
32void RemoteDvrInfo::extractRemoteId(
const std::string &name, std::string &o_host,
int &o_port, std::string &o_dev)
const
39 if (sscanf(
name.c_str(),
"%[^@]@%[^:]:%d",
dev,
host, &indi_port) < 2)
42 if (sscanf(
name.c_str(),
"@%[^:]:%d",
host, &indi_port) < 1)
44 log(
fmt(
"Bad remote device syntax: %s\n",
name.c_str()));
64 sockfd = openINDIServer();
68 this->
setFds(sockfd, sockfd);
71 log(
fmt(
"socket=%d\n", sockfd));
77 this->dev.insert(
dev);
98 Msg *mp =
new Msg(
nullptr, root);
104int RemoteDvrInfo::openINDIServer()
106 struct sockaddr_in serv_addr;
111 hp = gethostbyname(
host.c_str());
119 (void)memset((
char *)&serv_addr, 0,
sizeof(serv_addr));
120 serv_addr.sin_family = AF_INET;
121 serv_addr.sin_addr.s_addr = ((
struct in_addr *)(hp->h_addr_list[0]))->s_addr;
122 serv_addr.sin_port = htons(
port);
123 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
130 if (connect(sockfd, (
struct sockaddr *)&serv_addr,
sizeof(serv_addr)) < 0)
CommandLineArgs * userConfigurableArguments
std::string fmt(const char *fmt,...)
std::set< std::string > dev
void log(const std::string &log) const override
void setFds(int rFd, int wFd)
RemoteDvrInfo * clone() const override
XMLEle * addXMLEle(XMLEle *parent, const char *tag)
add an element with the given tag to the given element. parent can be NULL to make a new root.
XMLAtt * addXMLAtt(XMLEle *ep, const char *name, const char *valu)
Add an XML attribute to an existing XML element.
constexpr unsigned maxStringBufferLength
constexpr unsigned indiPortDefault