Files
Work/CapServer/hold/MainApplication.cpp
2024-08-07 09:12:07 -04:00

125 lines
4.4 KiB
C++

#include <CapServer/MainApplication.hpp>
MainApplication::MainApplication()
{
}
MainApplication::~MainApplication()
{
}
int MainApplication::run(int argc,char **argv)
{
String command;
mParams.setArgs(argc,argv);
switch(mParams.getRequest())
{
case Params::Client :
mParams.showParams();
handleClient(mParams.getServer(),mParams.getPort().toInt());
break;
case Params::Server :
mParams.showParams();
handleServer(mParams.getHost(),mParams.getPort().toInt(),mParams.getDevice().toInt(),mParams.getRetain(),mParams.getDebug(),mParams.getShowSrcDlg());
break;
case Params::Settings :
mParams.showParams();
handleSettings(mParams.getShowSrcDlg());
break;
case Params::None :
displayUsage();
break;
}
return 0;
}
void MainApplication::handleServer(const String &host,int port,int deviceIndex,bool retain,bool debug,bool showSrcDlg)
{
message("[MainApplication::handleServer]starting server");
SocketServer socketServer(deviceIndex,retain,debug,showSrcDlg);
socketServer.listen(host,port);
}
void MainApplication::handleClient(const String &host,int port)
{
INETSocketAddress internetSocketAddress;
InternetAddress internetAddress(127,0,0,1);
Socket socket;
SocketHeader socketHeader;
Array<BYTE> content;
message("[MainApplication::handleClient]starting client");
internetSocketAddress.family(PF_INET);
internetSocketAddress.port(1024);
internetSocketAddress.internetAddress(internetAddress);
if(!socket.create())
{
message("[MainApplication::handleClient]create failed...");
return;
}
if(!socket.connect(internetSocketAddress))
{
message("[MainApplication::handleClient]connect failed...");
return;
}
message("[MainApplication::handleClient]reading socket header...");
socketHeader.unmarshall(socket);
message("[MainApplication::handleClient]header length",socketHeader.getSizeHeader());
message("[MainApplication::handleClient]version",socketHeader.getVersion());
message("[MainApplication::handleClient]content length",socketHeader.getContentLength());
message("[MainApplication::handleClient]content type",(int)socketHeader.getContentType());
content.size(socketHeader.getContentLength());
message("[MainApplication::handleClient]reading content...");
socket.receive((char*)&content[0],content.size());
message("[MainApplication::handleClient]done...");
socket.destroy();
}
void MainApplication::handleSettings(bool showSrcDlg)
{
VidReg vidReg;
Block<DriverInfo> driverInfoBlock;
VidCap::getDrivers(driverInfoBlock);
message("[MainApplication::handleSettings]Capture File",vidReg.getCaptureFile());
message("[MainApplication::handleSettings]Sequencing",vidReg.getSequencing()?"true":"false");
message("[MainApplication::handleSettings]Preview Rate",vidReg.getPreviewRate());
message("[MainApplication::handleSettings]Preview Width",vidReg.getPreviewWidth());
message("[MainApplication::handleSettings]Preview Height",vidReg.getPreviewHeight());
message("[MainApplication::handleSettings]Capture Width",vidReg.getCaptureWidth());
message("[MainApplication::handleSettings]Capture Height",vidReg.getCaptureHeight());
message("[MainApplication::handleSettings]Capture Quality",vidReg.getQuality());
message("[MainApplication::handleSettings]***********CAPTURE DEVICE LIST*********");
if(!driverInfoBlock.size())message("[MainApplication::handleSettings]No capture devices on system.");
for(int index=0;index<driverInfoBlock.size();index++)
{
WDMCap wdmCap(index);
if(wdmCap.isConnected())
{
message(String("[MainApplication::handleSettings]")+driverInfoBlock[index].driverName()+String(" ***Available"));
if(showSrcDlg)wdmCap.dialogVideoSource();
}
else message(String("[MainApplication::handleSettings]")+driverInfoBlock[index].driverName()+String(" ***Unavailable"));
}
}
void MainApplication::displayUsage(void)
{
message("CapServer [run host port device retain debug showsrcdlg]");
message(" run={server} | {client} | {settings}");
message(" server=<servername> | <serveraddress>");
message(" host=<hostname> | <hostaddress>");
message(" port=<port>");
message(" device=<index>");
message(" retain={true} | {false}");
message(" debug={true} | {false}");
message(" showsrcdlg={true} | {false}");
message(" ");
message(" CapServer run=server host=127.0.0.1 port=1024");
message(" CapServer run=server host=127.0.0.1 port=1024 device=0");
message(" CapServer run=client server=127.0.0.1 port=1024");
message(" CapServer run=settings");
}