InvocationManager::InvocationManager(CpStack& aCpStack) : Thread("InvocationManager") , iCpStack(aCpStack) , iLock("INVM") , iFreeInvocations(aCpStack.Env().InitParams()->NumInvocations()) , iWaitingInvocations(aCpStack.Env().InitParams()->NumInvocations()) , iFreeInvokers(aCpStack.Env().InitParams()->NumActionInvokerThreads()) { TUint i; iInvokers = (Invoker**)malloc(sizeof(*iInvokers) * iCpStack.Env().InitParams()->NumActionInvokerThreads()); for (i=0; i<iCpStack.Env().InitParams()->NumActionInvokerThreads(); i++) { Bws<Thread::kMaxNameBytes+1> thName; thName.AppendPrintf("ActionInvoker %d", i); thName.PtrZ(); iInvokers[i] = new Invoker((const TChar*)thName.Ptr(), iFreeInvokers); iFreeInvokers.Write(iInvokers[i]); iInvokers[i]->Start(); } for (i=0; i<iCpStack.Env().InitParams()->NumInvocations(); i++) { iFreeInvocations.Write(new OpenHome::Net::Invocation(iCpStack, iFreeInvocations)); } iActive = true; Start(); }
mStatus mDNSPlatformSendUDP(const mDNS* m, const void* const aMessage, const mDNSu8* const aEnd, mDNSInterfaceID aInterface, UDPSocket* /*src*/, const mDNSAddr *aAddress, mDNSIPPort aPort) { if (aInterface == mDNSInterface_LocalOnly) { LOG(kBonjour, "Bonjour mDNSPlatformSendUDP - local only, ignore\n"); return 0; } LOG(kBonjour, "Bonjour mDNSPlatformSendUDP\n"); MdnsPlatform& platform = *(MdnsPlatform*)m->p; Brn buffer((const TByte*)aMessage, (TUint)((const TByte*)aEnd - (const TByte*)aMessage)); ASSERT(aAddress->type == mDNSAddrType_IPv4); Bws<16> address; address.AppendPrintf("%d.%d.%d.%d", aAddress->ip.v4.b[0], aAddress->ip.v4.b[1], aAddress->ip.v4.b[2], aAddress->ip.v4.b[3] ); Endpoint endpoint(Arch::BigEndian2(aPort.NotAnInteger), address); mStatus status; try{ status = platform.SendUdp(buffer, endpoint); } catch (NetworkError&) { LOG(kError, "mDNSPlatformSendUDP caught NetworkError. Endpoint port %u, address: ", aPort.NotAnInteger); LOG(kError, address); LOG(kError, "\n"); status = mStatus_UnknownErr; } return status; }
EventServerUpnp::EventServerUpnp(CpStack& aCpStack, TIpAddress aInterface) : iTcpServer(aCpStack.Env(), "EventServer", aCpStack.Env().InitParams()->CpUpnpEventServerPort(), aInterface) { const TUint numThread = aCpStack.Env().InitParams()->NumEventSessionThreads(); for (TUint i=0; i<numThread; i++) { Bws<Thread::kMaxNameBytes+1> thName; thName.AppendPrintf("EventSession %d", i); thName.PtrZ(); iTcpServer.Add((const TChar*)thName.Ptr(), new EventSessionUpnp(aCpStack)); } }
EventServerUpnp::EventServerUpnp(CpStack& aCpStack, TIpAddress aInterface) : iTcpServer(aCpStack.Env(), "EventServer", aCpStack.Env().InitParams()->CpUpnpEventServerPort(), aInterface) { const TUint numThread = aCpStack.Env().InitParams()->NumEventSessionThreads(); #ifndef _WIN32 // nothing terribly bad would happen if this assertion failed so its not worth a separate Windows implementation ASSERT(numThread < 10); #endif for (TUint i=0; i<numThread; i++) { Bws<Thread::kMaxNameBytes+1> thName; thName.AppendPrintf("EventSession %d", i); thName.PtrZ(); iTcpServer.Add((const TChar*)thName.Ptr(), new EventSessionUpnp(aCpStack)); } }
SocketTcpServer* DviServerLpec::CreateServer(const NetworkAdapter& aNif) { SocketTcpServer* server = new SocketTcpServer(iDvStack.Env(), "LpecServer", iPort, aNif.Address()); const TUint numThreads = iDvStack.Env().InitParams()->DvNumLpecThreads(); AdapterData* ad = new AdapterData(aNif.Address()); iAdapterData.push_back(ad); for (TUint i=0; i<numThreads; i++) { Bws<Thread::kMaxNameBytes+1> thName; thName.AppendPrintf("LpecSession %d", i); thName.PtrZ(); DviSessionLpec* session = new DviSessionLpec(iDvStack, aNif.Address(), iPort); server->Add((const TChar*)thName.Ptr(), session); ad->iSessions.push_back(session); } return server; }
DviSubscriptionManager::DviSubscriptionManager(DvStack& aDvStack) : Thread("DvSubscriptionMgr") , iDvStack(aDvStack) , iLock("DSBM") , iFree(aDvStack.Env().InitParams()->DvNumPublisherThreads()) { const TUint numPublisherThreads = iDvStack.Env().InitParams()->DvNumPublisherThreads(); LOG(kDvEvent, "> DviSubscriptionManager: creating %u publisher threads\n", numPublisherThreads); iPublishers = (Publisher**)malloc(sizeof(*iPublishers) * numPublisherThreads); for (TUint i=0; i<numPublisherThreads; i++) { Bws<Thread::kMaxNameBytes+1> thName; thName.AppendPrintf("Publisher %d", i); thName.PtrZ(); iPublishers[i] = new Publisher((const TChar*)thName.Ptr(), iFree); iFree.Write(iPublishers[i]); iPublishers[i]->Start(); } Start(); }
XmlFetchManager::XmlFetchManager(CpStack& aCpStack) : Thread("XmlFetchManager") , iCpStack(aCpStack) , iLock("FETL") , iFree(iCpStack.Env().InitParams()->NumXmlFetcherThreads()) { const TUint numThreads = iCpStack.Env().InitParams()->NumXmlFetcherThreads(); iFetchers = (XmlFetcher**)malloc(sizeof(*iFetchers) * numThreads); for (TUint i=0; i<numThreads; i++) { Bws<Thread::kMaxNameBytes+1> thName; thName.AppendPrintf("XmlFetcher %d", i); thName.PtrZ(); iFetchers[i] = new XmlFetcher((const TChar*)thName.Ptr(), iFree); iFree.Write(iFetchers[i]); iFetchers[i]->Start(); } iActive = true; Start(); }
mStatus mDNSPlatformSendUDP(const mDNS* m, const void* const aMessage, const mDNSu8* const aEnd, mDNSInterfaceID aInterface, const mDNSAddr *aAddress, mDNSIPPort aPort) { if (aInterface == mDNSInterface_LocalOnly) { LOG(kBonjour, "Bonjour mDNSPlatformSendUDP - local only, ignore\n"); return 0; } LOG(kBonjour, "Bonjour mDNSPlatformSendUDP\n"); MdnsPlatform& platform = *(MdnsPlatform*)m->p; Brn buffer((const TByte*)aMessage, (TUint)((const TByte*)aEnd - (const TByte*)aMessage)); ASSERT(aAddress->type == mDNSAddrType_IPv4); Bws<16> address; address.AppendPrintf("%d.%d.%d.%d", aAddress->ip.v4.b[0], aAddress->ip.v4.b[1], aAddress->ip.v4.b[2], aAddress->ip.v4.b[3] ); Endpoint endpoint(Arch::BigEndian2(aPort.NotAnInteger), address); return platform.SendUdp(buffer, endpoint); }