NS_IMETHODIMP UDPClientListener::OnPacketReceived(nsIUDPSocket* socket, nsIUDPMessage* message) { mResult = NS_OK; uint16_t port; nsCString ip; nsCOMPtr<nsINetAddr> fromAddr; message->GetFromAddr(getter_AddRefs(fromAddr)); fromAddr->GetPort(&port); fromAddr->GetAddress(ip); passed("Packet received on client from %s:%d", ip.get(), port); if (TEST_SEND_API == phase && CheckMessageContent(message, REQUEST)) { uint32_t count; const uint32_t data = RESPONSE; printf("*** Attempting to write response 0x%x to server by SendWithAddr...\n", RESPONSE); mResult = socket->SendWithAddr(fromAddr, (const uint8_t*)&data, sizeof(uint32_t), &count); if (mResult == NS_OK && count == sizeof(uint32_t)) { passed("Response written"); } else { fail("Response written"); } return NS_OK; } else if (TEST_OUTPUT_STREAM != phase || !CheckMessageContent(message, RESPONSE)) { mResult = NS_ERROR_FAILURE; } // Notify thread QuitPumpingEvents(); return NS_OK; }
NS_IMETHODIMP MySocketListener::OnStopListening(nsIServerSocket *serv, nsresult status) { LOG(("MySocketListener::OnStopListening [serv=%p status=%x]\n", serv, status)); QuitPumpingEvents(); return NS_OK; }
NS_IMETHODIMP MyListener::OnStopRequest(nsIRequest *req, nsISupports *ctxt, nsresult status) { //printf(">>> OnStopRequest status=%x\n", status); if (--gKeepRunning == 0) QuitPumpingEvents(); return NS_OK; }
NS_IMETHODIMP InputTestConsumer::OnStopRequest(nsIRequest *request, nsISupports* context, nsresult aStatus) { LOG(("InputTestConsumer::OnStopRequest [status=%x]\n", aStatus)); QuitPumpingEvents(); return NS_OK; }
NS_IMETHODIMP FetchObserver::OnStopRequest(nsIRequest *request, nsISupports *context, nsresult status) { printf("FetchObserver::OnStopRequest [status=%x]\n", static_cast<uint32_t>(status)); QuitPumpingEvents(); return NS_OK; }
void Close_Locked() { LOG(("Close_Locked\n")); mOutput->Close(); mOutput = 0; mInput->Close(); mInput = 0; // post done copying event QuitPumpingEvents(); }
NS_IMETHODIMP MulticastTimerCallback::Notify(nsITimer* timer) { if (TEST_MULTICAST != phase) { return NS_OK; } // Multicast ping failed printf("Multicast ping timeout expired\n"); mResult = NS_ERROR_FAILURE; QuitPumpingEvents(); return NS_OK; }
NS_IMETHODIMP UDPListener::OnPacketReceived(nsIUDPServerSocket* socket, nsIUDPMessage* message) { mResult = NS_OK; uint16_t port; nsCString ip; nsCOMPtr<nsINetAddr> fromAddr; message->GetFromAddr(getter_AddRefs(fromAddr)); fromAddr->GetPort(&port); fromAddr->GetAddress(ip); passed("Packet received on server from %s:%d", ip.get(), port); nsCString data; message->GetData(data); const char* buffer = data.get(); uint32_t len = data.Length(); uint32_t input = 0; for (uint32_t i = 0; i < len; i++) { input += buffer[i] << (8 * i); } if (len != sizeof(uint32_t) || input != REQUEST) { mResult = NS_ERROR_FAILURE; fail("Request 0x%x received on server", input); } else { passed("Request 0x%x received on server", input); // Respond with same data nsCOMPtr<nsIOutputStream> outstream; message->GetOutputStream(getter_AddRefs(outstream)); uint32_t count; const uint32_t data = RESPONSE; printf("*** Attempting to write response 0x%x to client ...\n", RESPONSE); mResult = outstream->Write((const char*)&data, sizeof(uint32_t), &count); if (mResult == NS_OK && count == sizeof(uint32_t)) { passed("Response written"); } else { fail("Response written"); } } // Notify thread QuitPumpingEvents(); return NS_OK; }
NS_IMETHODIMP MyListener::OnStopRequest(nsIRequest *req, nsISupports *ctx, nsresult status) { if (NS_FAILED(status)) { nsCAutoString spec; req->GetName(spec); fprintf(stderr, "*** failed loading %s [reason=%x]\n", spec.get(), status); } if (--gRequestCount == 0) { // post shutdown event QuitPumpingEvents(); } return NS_OK; }
NS_IMETHODIMP MyStreamLoaderObserver::OnStreamComplete(nsIStreamLoader *loader, nsISupports *ctxt, nsresult status, uint32_t resultLen, const uint8_t *result) { LOG(("OnStreamComplete [status=%x resultLen=%u]\n", status, resultLen)); nsCOMPtr<nsIRequest> request; loader->GetRequest(getter_AddRefs(request)); LOG((" request=%p\n", request.get())); QuitPumpingEvents(); return NS_OK; }
// called on any thread NS_IMETHOD OnInputStreamReady(nsIAsyncInputStream *in) { LOG(("OnInputStreamReady\n")); nsresult rv; uint32_t n; char buf[500]; rv = in->Read(buf, sizeof(buf), &n); LOG((" read returned [rv=%x count=%u]\n", rv, n)); if (NS_FAILED(rv) || (n == 0)) { if (rv != NS_BASE_STREAM_WOULD_BLOCK) { QuitPumpingEvents(); return NS_OK; } } return in->AsyncWait(this, 0, 0, nullptr); }
NS_IMETHODIMP UDPServerListener::OnPacketReceived(nsIUDPSocket* socket, nsIUDPMessage* message) { mResult = NS_OK; uint16_t port; nsCString ip; nsCOMPtr<nsINetAddr> fromAddr; message->GetFromAddr(getter_AddRefs(fromAddr)); fromAddr->GetPort(&port); fromAddr->GetAddress(ip); passed("Packet received on server from %s:%d", ip.get(), port); if (TEST_OUTPUT_STREAM == phase && CheckMessageContent(message, REQUEST)) { nsCOMPtr<nsIOutputStream> outstream; message->GetOutputStream(getter_AddRefs(outstream)); uint32_t count; const uint32_t data = RESPONSE; printf("*** Attempting to write response 0x%x to client by OutputStream...\n", RESPONSE); mResult = outstream->Write((const char*)&data, sizeof(uint32_t), &count); if (mResult == NS_OK && count == sizeof(uint32_t)) { passed("Response written"); } else { fail("Response written"); } return NS_OK; } else if (TEST_MULTICAST == phase && CheckMessageContent(message, REQUEST)) { mResult = NS_OK; } else if (TEST_SEND_API != phase || !CheckMessageContent(message, RESPONSE)) { mResult = NS_ERROR_FAILURE; } // Notify thread QuitPumpingEvents(); return NS_OK; }
NS_IMETHOD OnStopRequest(nsIRequest *req, nsISupports *ctx, nsresult status) { LOG(("MyListener::OnStopRequest [status=%x]\n", status)); QuitPumpingEvents(); return NS_OK; }
NS_IMETHODIMP UDPServerListener::OnStopListening(nsIUDPSocket*, nsresult) { QuitPumpingEvents(); return NS_OK; }