bool SmsRequestParent::DoRequest(const SendMessageRequest& aRequest) { switch(aRequest.type()) { case SendMessageRequest::TSendSmsMessageRequest: { nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(smsService, true); const SendSmsMessageRequest &req = aRequest.get_SendSmsMessageRequest(); smsService->Send(req.serviceId(), req.number(), req.message(), req.silent(), this); } break; case SendMessageRequest::TSendMmsMessageRequest: { nsCOMPtr<nsIMmsService> mmsService = do_GetService(MMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(mmsService, true); AutoJSContext cx; JS::Rooted<JS::Value> params(cx); const SendMmsMessageRequest &req = aRequest.get_SendMmsMessageRequest(); if (!GetParamsFromSendMmsMessageRequest(cx, req, params.address())) { NS_WARNING("SmsRequestParent: Fail to build MMS params."); return true; } mmsService->Send(req.serviceId(), params, this); } break; default: MOZ_CRASH("Unknown type of SendMessageRequest!"); } return true; }
bool SmsRequestParent::DoRequest(const SendMessageRequest& aRequest) { switch(aRequest.type()) { case SendMessageRequest::TSendSmsMessageRequest: { nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(smsService, true); const SendSmsMessageRequest &data = aRequest.get_SendSmsMessageRequest(); smsService->Send(data.number(), data.message(), this); } break; case SendMessageRequest::TSendMmsMessageRequest: { nsCOMPtr<nsIMmsService> mmsService = do_GetService(MMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(mmsService, true); JS::Value params; JSContext* cx = nsContentUtils::GetSafeJSContext(); if (!GetParamsFromSendMmsMessageRequest( cx, aRequest.get_SendMmsMessageRequest(), ¶ms)) { NS_WARNING("SmsRequestParent: Fail to build MMS params."); return true; } mmsService->Send(params, this); } break; default: MOZ_NOT_REACHED("Unknown type of SendMessageRequest!"); return false; } return true; }
bool SmsRequestParent::DoRequest(const SendMessageRequest& aRequest) { nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(smsService, true); mSmsRequest = SmsRequest::Create(this); nsCOMPtr<nsISmsRequest> forwarder = new SmsRequestForwarder(mSmsRequest); nsresult rv = smsService->Send(aRequest.number(), aRequest.message(), forwarder); NS_ENSURE_SUCCESS(rv, false); return true; }
void SQSQueue::Push(const Message& message) { if(IsInitialized()) { AWS_LOGSTREAM_TRACE(CLASS_TAG, "Sending message to " << m_queueUrl); SendMessageRequest sendMessageRequest; sendMessageRequest.SetQueueUrl(m_queueUrl); sendMessageRequest.SetMessageBody(message.GetBody()); sendMessageRequest.SetMessageAttributes(message.GetMessageAttributes()); std::shared_ptr<AsyncCallerContext> sendMessageContext = Aws::MakeShared<QueueMessageContext>(CLASS_TAG, message); m_client->SendMessageAsync(sendMessageRequest, std::bind(&SQSQueue::OnMessageSentOutcomeReceived, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4), sendMessageContext); } else { AWS_LOG_ERROR(CLASS_TAG, "Queue is not initialized, not pushing. Call EnsureQueueIsInitialized before calling this method."); } }
bool SmsRequestParent::DoRequest(const SendMessageRequest& aRequest) { switch(aRequest.type()) { case SendMessageRequest::TSendSmsMessageRequest: { nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(smsService, true); const SendSmsMessageRequest &req = aRequest.get_SendSmsMessageRequest(); smsService->Send(req.serviceId(), req.number(), req.message(), req.silent(), this); } break; case SendMessageRequest::TSendMmsMessageRequest: { nsCOMPtr<nsIMmsService> mmsService = do_GetService(MMS_SERVICE_CONTRACTID); NS_ENSURE_TRUE(mmsService, true); // There are cases (see bug 981202) where this is called with no JS on the // stack. And since mmsService might be JS-Implemented, we need to pass a // jsval to ::Send. Only system code should be looking at the result here, // so we just create it in the System-Principaled Junk Scope. AutoJSContext cx; JSAutoCompartment ac(cx, xpc::GetJunkScope()); JS::Rooted<JS::Value> params(cx); const SendMmsMessageRequest &req = aRequest.get_SendMmsMessageRequest(); if (!GetParamsFromSendMmsMessageRequest(cx, req, params.address())) { NS_WARNING("SmsRequestParent: Fail to build MMS params."); return true; } mmsService->Send(req.serviceId(), params, this); } break; default: MOZ_CRASH("Unknown type of SendMessageRequest!"); } return true; }
TEST_F(QueueOperationTest, TestSendReceiveDelete) { Aws::String queueName = BuildResourceName(BASE_SEND_RECEIVE_QUEUE_NAME); Aws::String queueUrl = CreateDefaultQueue(queueName); ASSERT_TRUE(queueUrl.find(queueName) != Aws::String::npos); SendMessageRequest sendMessageRequest; sendMessageRequest.SetMessageBody("TestMessageBody"); MessageAttributeValue stringAttributeValue; stringAttributeValue.SetStringValue("TestString"); stringAttributeValue.SetDataType("String"); sendMessageRequest.AddMessageAttributes("TestStringAttribute", stringAttributeValue); MessageAttributeValue binaryAttributeValue; Aws::Utils::ByteBuffer byteBuffer(10); for(unsigned i = 0; i < 10; ++i) { byteBuffer[i] = (unsigned char)i; } binaryAttributeValue.SetBinaryValue(byteBuffer); binaryAttributeValue.SetDataType("Binary"); sendMessageRequest.AddMessageAttributes("TestBinaryAttribute", binaryAttributeValue); sendMessageRequest.SetQueueUrl(queueUrl); SendMessageOutcome sendMessageOutcome = sqsClient->SendMessage(sendMessageRequest); ASSERT_TRUE(sendMessageOutcome.IsSuccess()); EXPECT_TRUE(sendMessageOutcome.GetResult().GetMessageId().length() > 0); ReceiveMessageRequest receiveMessageRequest; receiveMessageRequest.SetMaxNumberOfMessages(1); receiveMessageRequest.SetQueueUrl(queueUrl); receiveMessageRequest.AddMessageAttributeNames("All"); ReceiveMessageOutcome receiveMessageOutcome = sqsClient->ReceiveMessage(receiveMessageRequest); ASSERT_TRUE(receiveMessageOutcome.IsSuccess()); ReceiveMessageResult receiveMessageResult = receiveMessageOutcome.GetResult(); ASSERT_EQ(1uL, receiveMessageResult.GetMessages().size()); EXPECT_EQ("TestMessageBody", receiveMessageResult.GetMessages()[0].GetBody()); Aws::Map<Aws::String, MessageAttributeValue> messageAttributes = receiveMessageResult.GetMessages()[0].GetMessageAttributes(); ASSERT_TRUE(messageAttributes.find("TestStringAttribute") != messageAttributes.end()); EXPECT_EQ(stringAttributeValue.GetStringValue(), messageAttributes["TestStringAttribute"].GetStringValue()); ASSERT_TRUE(messageAttributes.find("TestBinaryAttribute") != messageAttributes.end()); EXPECT_EQ(byteBuffer, messageAttributes["TestBinaryAttribute"].GetBinaryValue()); DeleteMessageRequest deleteMessageRequest; deleteMessageRequest.SetQueueUrl(queueUrl); deleteMessageRequest.SetReceiptHandle(receiveMessageResult.GetMessages()[0].GetReceiptHandle()); DeleteMessageOutcome deleteMessageOutcome = sqsClient->DeleteMessage(deleteMessageRequest); ASSERT_TRUE(deleteMessageOutcome.IsSuccess()); receiveMessageOutcome = sqsClient->ReceiveMessage(receiveMessageRequest); EXPECT_EQ(0uL, receiveMessageOutcome.GetResult().GetMessages().size()); DeleteQueueRequest deleteQueueRequest; deleteQueueRequest.WithQueueUrl(queueUrl); DeleteQueueOutcome deleteQueueOutcome = sqsClient->DeleteQueue(deleteQueueRequest); ASSERT_TRUE(deleteQueueOutcome.IsSuccess()); }