示例#1
0
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();

}
示例#2
0
//-------------------------------------------------------------------------
CWebserverRequest::~CWebserverRequest() 
{
	if(outbuf)
		delete[] outbuf;

	EndRequest();
}
示例#3
0
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);
}
示例#4
0
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;
}
示例#5
0
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;
}
示例#6
0
// 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();
		}
	}
}
示例#7
0
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();

}
示例#8
0
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();

}
示例#9
0
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();

}
示例#10
0
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();

}
示例#11
0
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();

}
示例#12
0
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();

}
示例#13
0
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();

}
示例#14
0
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();

}
示例#15
0
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();

}
示例#16
0
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();

}
示例#17
0
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();

}
示例#18
0
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();

}
示例#19
0
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();

}
示例#20
0
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();

}
示例#21
0
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;
}