NS_IMETHODIMP UDPSocket::OnPacketReceived(nsIUDPSocket* aSocket, nsIUDPMessage* aMessage) { // nsIUDPSocketListener callbacks should be invoked on main thread. MOZ_ASSERT(NS_IsMainThread(), "Not running on main thread"); // Create appropriate JS object for message FallibleTArray<uint8_t>& buffer = aMessage->GetDataAsTArray(); nsCOMPtr<nsINetAddr> addr; if (NS_WARN_IF(NS_FAILED(aMessage->GetFromAddr(getter_AddRefs(addr))))) { return NS_OK; } nsCString remoteAddress; if (NS_WARN_IF(NS_FAILED(addr->GetAddress(remoteAddress)))) { return NS_OK; } uint16_t remotePort; if (NS_WARN_IF(NS_FAILED(addr->GetPort(&remotePort)))) { return NS_OK; } HandleReceivedData(remoteAddress, remotePort, buffer.Elements(), buffer.Length()); return NS_OK; }
NS_IMETHODIMP UDPSocket::CallListenerReceivedData(const nsACString& aRemoteAddress, uint16_t aRemotePort, const uint8_t* aData, uint32_t aDataLength) { HandleReceivedData(aRemoteAddress, aRemotePort, aData, aDataLength); return NS_OK; }
void xb_ReceiveTask(void const *argument){ for(;;){ osSignalWait(XB_SIG_DATARECEIVED, osWaitForever); //Wait until end of command char arrives osSignalClear(xb_ReceiveTaskId, XB_SIG_DATARECEIVED); while( xb_RxCmdCnt > xb_HandledRxCmdCnt ){ //If there is more received than parsed commands xb_HandledRxCmdCnt++; //Increment handled command counter HandleReceivedData(); //Handle command } } }