int main(int argc, char* argv[]) { InitModuleObjects(); EnableSEHtoExceptionMapping(); if (argc<6) { usage(); return 0; } try { const char *filename = argv[1]; Owned<IDaliCapabilityCreator> cc = createDaliCapabilityCreator(); cc->setSystemID(argv[2]); cc->setServerPassword(argv[3]); for (unsigned i=4;i<argc;i++) { const char *cmd = argv[i++]; if (i==argc) break; const char *param = argv[i]; if (stricmp(cmd,"THORWIDTH")==0) { cc->setLimit(DCR_ThorSlave,atoi(param)); } else if (stricmp(cmd,"DALINODE")==0) { StringBuffer mac; if (strchr(param,'.')) { // must be ip IpAddress ip; ip.set(param); if (!getMAC(ip,mac)) { printf("ERROR: could mot get MAC address for %s\n",param); return 1; } } else mac.append(param); cc->addCapability(DCR_DaliServer,mac.str()); } else { printf("ERROR: unknown command %s\n",cmd); return 1; } } StringBuffer results; cc->save(results); Owned<IFile> ifile = createIFile(filename); Owned<IFileIO> ifileio = ifile->open(IFOcreate); ifileio->write(0,results.length(),results.str()); printf("Dali Capabilities sucessfully exported to %s\n", filename); } catch (IException *e) { EXCLOG(e); e->Release(); } releaseAtoms(); return 0; }
Status TcpSocket::accept(socket_details::socket_t &peer, IpAddress &remoteAddress) { socket_details::sockaddr_t addr; unsigned int addrLen = sizeof(addr); peer = ::accept(mHandle, reinterpret_cast<sockaddr*>(&addr), &addrLen); if(peer < 0) { return getLastError(); } remoteAddress.set(addr); return net::Ok; }
net::Status UdpSocket::recv(void *data, size_t buffer_size, size_t &received, IpAddress &from) { if (data == NULL) { received = 0; return Error; } socket_details::sockaddr_t addr = socket_details::create_address(0, 0); unsigned int addr_len = sizeof(addr); ssize_t ret = ::recvfrom(handle(), static_cast<char *>(data), buffer_size, 0, reinterpret_cast<::sockaddr *>(&addr), &addr_len); if (ret < 0) { return getLastError(); received = 0; } else { received = static_cast<size_t>(ret); from.set(addr); } return Ok; }