bool AskService::SubmitQuestion(IAnswer *answerCB, char16* nickname, char16* password, char16* questionText, int32 numberOfPhotos, int32 responseType, ArrayOfString *customResponses, int32 durationType, bool isPrivate) { if (!StartRequest(answerCB, AskService::EPS_SUBMITQUESTION)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(16);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteWString(questionText); isOk = isOk && str->WriteInt32(numberOfPhotos); isOk = isOk && str->WriteInt32(responseType); isOk = isOk && customResponses->WriteToStream(str); isOk = isOk && str->WriteInt32(durationType); isOk = isOk && str->WriteInt8((int8)isPrivate); return isOk && EndRequest(); }
//------------------------------------------------------------------------- CWebserverRequest::~CWebserverRequest() { if(outbuf) delete[] outbuf; EndRequest(); }
HRESULT PipeStream::EndTransactData(AsyncContext* context, DWORD* read_length) { if (context == nullptr) return E_INVALIDARG; if (context->stream != this || context->type != PipeRequest::Transact) return E_HANDLE; return EndRequest(context, read_length); }
NS_IMETHODIMP nsPipeFilterListener::OnStopRequest(nsIRequest* aRequest, nsISupports* aContext, nsresult aStatus) { nsresult rv = NS_OK; DEBUG_LOG(("nsPipeFilterListener::OnStopRequest: (%p)\n", this)); // Ensure that OnStopRequest call chain does not break by failing softly if (!mEndDelimiter.IsEmpty() && mEndLine.IsEmpty()) { // Failed to match end delimiter aStatus = NS_BINDING_ABORTED; } if (!mRequestEnded) { rv = EndRequest(aRequest, aContext); if (NS_FAILED(rv)) aStatus = NS_BINDING_ABORTED; } if (mTailListener) { if (!mTailRequestStarted) { mTailRequestStarted = PR_TRUE; rv = mTailListener->OnStartRequest(aRequest, mContext ? mContext.get() : aContext); if (NS_FAILED(rv)) aStatus = NS_BINDING_ABORTED; } rv = mTailListener->OnStopRequest(aRequest, mContext ? mContext.get() : aContext, aStatus); if (NS_FAILED(rv)) aStatus = NS_BINDING_ABORTED; } if (mListener) { rv = mListener->OnStopRequest(aRequest, mContext ? mContext.get() : aContext, aStatus); if (NS_FAILED(rv)) aStatus = NS_BINDING_ABORTED; } // Release owning refs mListener = nsnull; mTailListener = nsnull; mContext = nsnull; return (aStatus == NS_BINDING_ABORTED) ? NS_ERROR_FAILURE : NS_OK; }
HRESULT PipeStream::EndWaitForConnection(AsyncContext* context) { if (context == nullptr) return E_INVALIDARG; if (context->stream != this || context->type != PipeRequest::WaitForConnection) return E_HANDLE; HRESULT result = EndRequest(context, nullptr); if (SUCCEEDED(result)) connected_ = true; return result; }
// send AS MUCH OF THE ConnectionS SENDQ as we are able to (might not be all of it) void Connection::FlushWriteBuf() { if ((sendq.length()) && (this->fd != FD_MAGIC_NUMBER)) { int old_sendq_length = sendq.length(); int n_sent = ServerInstance->SE->Send(this, this->sendq.data(), this->sendq.length(), 0); if (n_sent == -1) { if (errno == EAGAIN) { /* The socket buffer is full. This isnt fatal, * try again later. */ this->ServerInstance->SE->WantWrite(this); } else { /* Fatal error, set write error and bail */ ServerInstance->Connections->Delete(this); // XXX shouldn't try flush buffer, add a bool? return; } } else { /* advance the queue */ if (n_sent) this->sendq = this->sendq.substr(n_sent); if (n_sent != old_sendq_length) this->ServerInstance->SE->WantWrite(this); } } if (this->sendq.empty()) { FOREACH_MOD(I_OnBufferFlushed,OnBufferFlushed(this)); if ((State == HTTP_SEND_DATA) && ResponseBufferDone) { ServerInstance->Log(DEBUG, "Ending request after emptying write buffer because ResponseBufferDone is true"); EndRequest(); } else if ((State == HTTP_SEND_HEADERS) && ResponseBackend) { State = HTTP_SEND_DATA; SendStaticData(); } } }
bool SnapUpService::GetCollections(IAnswer *answerCB, char16* nickname, char16* password) { if (!StartRequest(answerCB, SnapUpService::EPS_GETCOLLECTIONS)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(25);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); return isOk && EndRequest(); }
bool AskService::GetQuestionIDs(IAnswer *answerCB, char16* nickname, char16* password) { if (!StartRequest(answerCB, AskService::EPS_GETQUESTIONIDS)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(12);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); return isOk && EndRequest(); }
bool AskService::CompleteQuestion(IAnswer *answerCB, char16* nickname, char16* password, char16* askQuestionID) { if (!StartRequest(answerCB, AskService::EPS_COMPLETEQUESTION)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(8);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteWString(askQuestionID); return isOk && EndRequest(); }
bool AskService::SkipQuestion(IAnswer *answerCB, char16* nickname, char16* password, int32 questionID) { if (!StartRequest(answerCB, AskService::EPS_SKIPQUESTION)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(15);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteInt32(questionID); return isOk && EndRequest(); }
bool AskService::GetResponse(IAnswer *answerCB, char16* nickname, char16* password, int32 questionID) { if (!StartRequest(answerCB, AskService::EPS_GETRESPONSE)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(13);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteInt32(questionID); return isOk && EndRequest(); }
bool AskService::AddComment(IAnswer *answerCB, char16* nickname, char16* password, AskComment *newComment) { if (!StartRequest(answerCB, AskService::EPS_ADDCOMMENT)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(6);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && newComment->WriteToStream(str); return isOk && EndRequest(); }
bool AskService::GetComment(IAnswer *answerCB, char16* nickname, char16* password, int32 commentID) { if (!StartRequest(answerCB, AskService::EPS_GETCOMMENT)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(9);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteInt32(commentID); return isOk && EndRequest(); }
bool SnapUpService::GetPhotosByCollection(IAnswer *answerCB, char16* nickname, char16* password, char16* webPhotoCollectionID) { if (!StartRequest(answerCB, SnapUpService::EPS_GETPHOTOSBYCOLLECTION)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(26);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteWString(webPhotoCollectionID); return isOk && EndRequest(); }
bool SnapUpService::DeletePhoto(IAnswer *answerCB, char16* nickname, char16* password, char16* webPhotoID) { if (!StartRequest(answerCB, SnapUpService::EPS_DELETEPHOTO)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(23);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteWString(webPhotoID); return isOk && EndRequest(); }
bool SnapUpService::JavaUploadPhoto(IAnswer *answerCB, char16* encryptedWebMemberID, char16* webPhotoCollectionID, ArrayOfInt8 *base64StringPhoto, char16* dateTime) { if (!StartRequest(answerCB, SnapUpService::EPS_JAVAUPLOADPHOTO)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(27);//request id isOk = isOk && str->WriteWString(encryptedWebMemberID); isOk = isOk && str->WriteWString(webPhotoCollectionID); isOk = isOk && base64StringPhoto->WriteToStream(str); isOk = isOk && str->WriteWString(dateTime); return isOk && EndRequest(); }
bool AskService::HasNewComments(IAnswer *answerCB, char16* nickname, char16* password, int32 questionID, int32 lastCommentID) { if (!StartRequest(answerCB, AskService::EPS_HASNEWCOMMENTS)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(14);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteInt32(questionID); isOk = isOk && str->WriteInt32(lastCommentID); return isOk && EndRequest(); }
bool SnapUpService::DeviceUploadPhoto(IAnswer *answerCB, char16* nickname, char16* password, ArrayOfInt8 *base64StringPhoto, char16* dateTime) { if (!StartRequest(answerCB, SnapUpService::EPS_DEVICEUPLOADPHOTO)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(22);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && base64StringPhoto->WriteToStream(str); isOk = isOk && str->WriteWString(dateTime); return isOk && EndRequest(); }
bool AskService::AttachPhoto(IAnswer *answerCB, char16* nickname, char16* password, char16* askQuestionID, int32 indexOrder, ArrayOfInt8 *photoBase64String) { if (!StartRequest(answerCB, AskService::EPS_ATTACHPHOTO)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(7);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteWString(askQuestionID); isOk = isOk && str->WriteInt32(indexOrder); isOk = isOk && photoBase64String->WriteToStream(str); return isOk && EndRequest(); }
bool SnapUpService::UploadPhoto(IAnswer *answerCB, char16* nickname, char16* password, char16* webPhotoCollectionID, ArrayOfInt8 *photoFileBytes, char16* takenDT) { if (!StartRequest(answerCB, SnapUpService::EPS_UPLOADPHOTO)) { return false; } PacketStream *str = pServer->GetStream(); bool isOk = true; isOk = isOk && str->WriteInt32(29);//request id isOk = isOk && str->WriteWString(nickname); isOk = isOk && str->WriteWString(password); isOk = isOk && str->WriteWString(webPhotoCollectionID); isOk = isOk && photoFileBytes->WriteToStream(str); isOk = isOk && str->WriteWString(takenDT); return isOk && EndRequest(); }
int __cdecl wmain( int argc, wchar_t **argv ) /*++ Routine Description: main Arguments: argc - argv - Return Value: Win32. --*/ { DWORD dwError = ERROR_SUCCESS; PMYCONTEXT pRegularContext = NULL; PMYCONTEXT pCancelContext = NULL; if (argc != 2) { printf("Usage: %S <Server>\n", argv[0]); goto Exit; } dwError = InitializeGlobals(argv[1]); if (dwError != ERROR_SUCCESS) { goto Exit; } // // Kick off a regular request. // dwError = BeginRequest(L"/", &pRegularContext); if (dwError != ERROR_SUCCESS) { goto Exit; } // // Kick off a request we actually going to always cancel (for demonstration // purposes). // dwError = BeginRequest(L"/cancel", &pCancelContext); if (dwError != ERROR_SUCCESS) { goto Exit; } dwError = DemoCancel(pCancelContext); if (dwError != ERROR_SUCCESS) { goto Exit; } // // Wait for the regular request to complete normally. // dwError = EndRequest(pRegularContext); if (dwError != ERROR_SUCCESS) { goto Exit; } printf("pRegularContext completed successfully\n"); // // Wait for the cancel request to complete normally. // dwError = EndRequest(pCancelContext); if (dwError != ERROR_SUCCESS) { if (dwError == ERROR_OPERATION_ABORTED || dwError == ERROR_WINHTTP_OPERATION_CANCELLED) { printf("DemoCancelThreadFunc won the race and cancelled " "pCancelContext\n"); } goto Exit; } printf("pCancelContext completed successfully\n"); Exit: if (dwError != ERROR_SUCCESS) { printf("dwError=%d\n", dwError); } if (pCancelContext != NULL) { DereferenceContext(pCancelContext); pCancelContext = NULL; } if (pRegularContext != NULL) { DereferenceContext(pRegularContext); pRegularContext = NULL; } CleanupGlobals(); return (int)dwError; }