⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cxx

📁 pwlib源码库
💻 CXX
字号:
/* * main.cxx * * PWLib application source file for xmlrpcsrvr * * Main program entry point. * * Copyright 2002 Equivalence * * $Log: main.cxx,v $ * Revision 1.4  2003/09/26 13:41:32  rjongbloed * Added special test to give more indicative error if try to compile without Expat support. * * Revision 1.3  2003/04/17 00:03:23  craigs * Changed default port from 6666 to 8000 to remove conflicts with other programs * that use that port by default * * Revision 1.2  2002/10/23 15:58:18  craigs * Fixed problem with parsing requests, and added sample return value * * Revision 1.1  2002/10/02 08:58:20  craigs * Initial version * */#include <ptlib.h>#include "main.h"#include "custom.h"#if !P_EXPAT#error Must have Expat XML support for this application#endifPCREATE_PROCESS(Xmlrpcsrvr);const WORD DefaultHTTPPort = 8000;Xmlrpcsrvr::Xmlrpcsrvr()  : PHTTPServiceProcess(ProductInfo){  xmlrpcServer = NULL;}BOOL Xmlrpcsrvr::OnStart(){  GetFile().GetDirectory().Change();  httpNameSpace.AddResource(new PHTTPDirectory("data", "data"));  httpNameSpace.AddResource(new PServiceHTTPDirectory("html", "html"));  xmlrpcServer = new PXMLRPCServerResource();  xmlrpcServer->SetMethod("Function1", PCREATE_NOTIFIER(FunctionNotifier));  return PHTTPServiceProcess::OnStart();}void Xmlrpcsrvr::OnStop(){  PHTTPServiceProcess::OnStop();  delete xmlrpcServer;  xmlrpcServer = NULL;}void Xmlrpcsrvr::OnConfigChanged(){}void Xmlrpcsrvr::OnControl(){}PString Xmlrpcsrvr::GetPageGraphic(){  return Xmlrpcsrvr::GetPageGraphic();}void Xmlrpcsrvr::AddUnregisteredText(PHTML &){}BOOL Xmlrpcsrvr::Initialise(const char * initMsg){  //  create the home page  static const char welcomeHtml[] = "welcome.html";  if (PFile::Exists(welcomeHtml))    httpNameSpace.AddResource(new PServiceHTTPFile(welcomeHtml, TRUE), PHTTPSpace::Overwrite);  else {    PHTML html;    html << PHTML::Title("Welcome to "+GetName())         << PHTML::Body()         << "<CENTER>\r\n"         << PHTML::Heading(1) << "Welcome to "         << gifHTML         << PHTML::Heading(1)         << PProcess::GetOSClass() << ' ' << PProcess::GetOSName()         << " Version " << GetVersion(TRUE) << PHTML::BreakLine()         << ' ' << compilationDate.AsString("d MMMM yy")         << PHTML::BreakLine()         << "by"         << PHTML::BreakLine()         << PHTML::Heading(3)         << PHTML::HotLink(GetHomePage()) << GetManufacturer() << PHTML::HotLink()         << PHTML::Heading(3)         << PHTML::HotLink(PString("mailto:")+GetEMailAddress()) << GetEMailAddress() << PHTML::HotLink()         << PHTML::Paragraph()         << PHTML::HRule()         << PHTML::Paragraph()         << PHTML::HotLink("http://www.equival.com.au/xmlrpcsrvr/relnotes/" + GetVersion(TRUE) + ".html")         << "Release notes" << PHTML::HotLink()         << " on this version of " << GetProductName() << " are available."         << PHTML::Paragraph()         << PHTML::HRule()         << GetCopyrightText()         << PHTML::Body();    httpNameSpace.AddResource(new PServiceHTTPString("welcome.html", html), PHTTPSpace::Overwrite);  }  // note we do NOT use Overwrite  httpNameSpace.AddResource(xmlrpcServer);  // set up the HTTP port for listening & start the first HTTP thread  if (ListenForHTTP(DefaultHTTPPort))    PSYSTEMLOG(Info, "Opened master socket for HTTP: " << httpListeningSocket->GetPort());  else {    PSYSTEMLOG(Fatal, "Cannot run without HTTP port: " << httpListeningSocket->GetErrorText());    return FALSE;  }  PSYSTEMLOG(Info, "Service " << GetName() << ' ' << initMsg);  return TRUE;}void Xmlrpcsrvr::Main(){  Suspend();}void Xmlrpcsrvr::FunctionNotifier(PXMLRPCServerParms & args, INT){  PTRACE(1, "XMLRPC function called");  PINDEX i;  for (i = 0; i < args.request.GetParamCount(); i++) {    PStringToString dict;    PString type;    PString value;    if (args.request.GetParam(i, dict))      PTRACE(2, "XMLRPC argument " << i << " is struct: " << dict);    else if (args.request.GetParam(i, type, value))      PTRACE(2, "XMLRPC argument " << i << " is " << type << " with value " << value);    else      PTRACE(2, "Cannot parse XMLRPC argument " << i);  }  args.response.AddParam("return value");}// End of File ///////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -