Пример #1
0
STDMETHODIMP CPyMFC_CustomProtocol::Start(
	LPCWSTR szUrl,
	IInternetProtocolSink *pIProtSink,
	IInternetBindInfo *pIBindInfo,
	DWORD grfSTI,
	DWORD dwReserved)
{
	HRESULT hr = S_OK;
	
	bool ret = doCallback(szUrl);
	if (!ret) {
		return INET_E_CANNOT_CONNECT;
	}

	pIProtSink->ReportProgress(BINDSTATUS_FINDINGRESOURCE, szUrl);
	pIProtSink->ReportProgress(BINDSTATUS_CONNECTING, szUrl);
	pIProtSink->ReportProgress(BINDSTATUS_SENDINGREQUEST, szUrl);
	pIProtSink->ReportProgress(BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE, m_mimetype);
	pIProtSink->ReportData(BSCF_FIRSTDATANOTIFICATION, 0, 1000);
	pIProtSink->ReportData(BSCF_LASTDATANOTIFICATION | BSCF_DATAFULLYAVAILABLE, 1000, 1000);
		
/*	}
	else
	{
		if (grfSTI & PI_PARSE_URL)
			hr = S_FALSE;
	}
*/
	return hr;
}
Пример #2
0
void
DCMsg::callMessageReceiveFailed( DCMessenger *messenger )
{
	deliveryStatus( DELIVERY_FAILED );
	messageReceiveFailed( messenger );
	doCallback();
}
 virtual void handleMIDIEvent(AUMIDIEvent const& midiEvent) override {
     if (midiEvent.length != 3) return;
     uint8_t status = midiEvent.data[0];
     uint8_t data1 = midiEvent.data[1];
     uint8_t data2 = midiEvent.data[2];
     doCallback(status, data1, data2);
 }
Пример #4
0
void disposePacket(BCSPStack * stack,Packet *pkt)
{
	if (!pkt) return ;
	doCallback(pkt->request,transferCancelled) ;
	//it doesn't matter which mode we use since they're all 
	//going to be freed anyway
	returnPacketToPool(stack,pkt,modeRCV) ;
}
Пример #5
0
void Loop::doSubmit(Ref<Future> fut, Ref<Object> f, Ref<Tuple> args, Ref<Dict> kw){
	f->py_check_callable();
	doCallback([fut=std::move(fut), f=std::move(f), args=std::move(args), kw=std::move(kw)](){
		fut->set_from3(f, args, kw);
		return;
	});
	return;
}
Пример #6
0
void ScriptTcl::runController(int task) {
  scriptBarrier.publish(barrierStep++,task);
  suspend();
#ifdef NAMD_TCL
  if ( task == SCRIPT_RUN || task == SCRIPT_CONTINUE || task == SCRIPT_MINIMIZE  ) {
    doCallback(state->callback_labelstring.c_str(),
               state->callback_valuestring.c_str());
  }
#endif
}
Пример #7
0
AlarmNode* AlarmNode::findNow(int N, time_t time) {
  if (N==0) {
    return this;
  } else if (next->getNextTrigger() > time && next!=this) {
    doCallback();
    return next;
  } else {
    return findNow(N-1,time);
  }
}
Пример #8
0
DCMsg::MessageClosureEnum
DCMsg::callMessageReceived(
				DCMessenger *messenger, Sock *sock )
{
	deliveryStatus( DELIVERY_SUCCEEDED );
	MessageClosureEnum closure = messageReceived( messenger, sock );
	if( closure == MESSAGE_FINISHED ) {
		doCallback();
	}
	return closure;
}
Пример #9
0
void disposeTransferRequestQueue(BCSPStack * stack,BCTransferRequestQueue * q)
{
	BCTransferRequest * req ;
	while ((req = ASYNCBLKgetTransferRequestFromQueue(stack,q)))
	{
		// originally we got a packet here and used disposePacket to do the 
		// appropriate callback but that led to problems with pool accounting 
		// causing a block and thus exception.  So it's easier (and safer)
		//just to call the callback directly 
		doCallback(req,transferCancelled) ;
	}
}
Пример #10
0
bool IRC::receiveMessage(uint8_t MSG_ID, uint8_t callingThreadID, void* cdata) {

	bool lRetval = false;
	//std::cerr << "IRCthread msg received." << std::endl;
	if(MSG_THREAD_START_WORK == MSG_ID) {

		std::cerr << "Begin connect to server." << std::endl;
		lRetval = connectToServer();
		std::cerr << "Connected to server as \"" << mMyNick << "\"" << std::endl;
		if(cdata) delete(static_cast<ClientQueryData*>(cdata));

	} else if(MSG_QUERY_REPLY == MSG_ID) {

		//handleReply(static_cast<ClientQueryData*>(cdata));
		doCallback(cdata);
		//delete(cdata);

	}
	return(lRetval);

}
Пример #11
0
int getStrokeman(void) {
    int (*getRandCallBack)(void) = getRand;  // pointer to function callbackFun
    return doCallback(getRandCallBack);  // pass pointer to function as an argument to function
}
// feed the parser with a char
// return value:
// 1	if needs more chars
// 0	if finished
// -1	if error
uint8_t JSONStreamingParser::feed(char c)
{
	switch(state)
	{
		// on error, just drop chars and return state
		case PARSER_ERROR:
		case PARSER_FINISHED:
			return state;
			
		// on idle, espect { opening character, skipping blanks
		case PARSER_IDLE:
			if(isspace(c))
				return state;
			if(c != '{')
			{
				state = PARSER_ERROR;
				return state;
			}
			state = PARSER_WAIT_NAME;
			flags = 0;
			return state;
			
		case PARSER_WAIT_NAME:
			// skip spaces
			if(isspace(c))
				return state;
			
			// we can have quotes or double quotes here
			if(c != '"' && c != '\'')
			{
				state = PARSER_ERROR;
				return state;
			}
			if(c == '"')
				flags = IN_DQUOTES;
			else
				flags = IN_QUOTES;
			
			// switch to reading name
			clearName();
			state = PARSER_NAME;
			return state;
			
		case PARSER_NAME:
		
			// first, look at special state after a backslash
			if(flags & IN_BACKSLASH)
			{
				appendName(c);
				flags &= ~IN_BACKSLASH;
				return state;
			}
			else if(c == '\\')
			{
				flags |= IN_BACKSLASH;
				return state;
			}
				
			switch(c)
			{
				case '"':
					if((flags & IN_QUOTES))
					{
						appendName(c);
						return state;
					}
					// switch to semicolon state
					state = PARSER_WAIT_SEMICOLON;
					flags = 0;
					return state;
					
				case '\'':
					if((flags & IN_DQUOTES))
					{
						appendName(c);
						return state;
					}
					// switch to semicolon state
					state = PARSER_WAIT_SEMICOLON;
					flags = 0;
					return state;
					
				case ':':
					if( (flags & IN_QUOTES) || (flags & IN_DQUOTES))
					{
						appendName(c);
						return state;
					}
					state = PARSER_WAIT_VALUE;
					flags = 0;
					return state;
					
				case 0:
					state = PARSER_ERROR;
					return state;
					
				default:
					appendName(c);
					return state;
			} // switch(c)
			
		case PARSER_WAIT_SEMICOLON:
			if(isspace(c))
				return state;
			if(c != ':')
			{
				state = PARSER_ERROR;
				return state;
			}
			state = PARSER_WAIT_VALUE;
			flags = 0;
			return state;
			
		case PARSER_WAIT_VALUE:
			if(isspace(c))
				return state;
			
			// value can be a simple type, a list or an array
			// check latter 2 before
			if(c == '{')
			{
				doCallback("<LIST>");
				level++;
				
				// mark current level as list
				levels = levels << 1;
				
				clearName();
				state = PARSER_WAIT_NAME;
				flags = 0;
				return state;
			}
			else if(c == '[')
			{
				doCallback("<ARRAY>");
				level++;

				// mark current level as array
				levels = (levels << 1) | 0x01;
				
				clearName();
				state = PARSER_WAIT_VALUE;
				flags = 0;
				return state;
			}
			else if(c == '"')
			{
				flags = IN_DQUOTES;
				clearValue();
				appendValue(c);
				state = PARSER_VALUE;
				return state;
			}
			else if(c == '\'')
			{
				flags = IN_QUOTES;
				clearValue();
				appendValue(c);
				state = PARSER_VALUE;
				return state;
			}
			else if(c == '}' || c == ']')
			{
				if(level <= 0)
				{
					if(c == '}')
						state = PARSER_FINISHED;
					else
						state = PARSER_ERROR;
					return state;
				}
				level--;
				levels >>= 1;
				state = PARSER_WAIT_SEPARATOR;
				return state;
			}
			else
			{
				flags = 0;
				clearValue();
				appendValue(c);
				state = PARSER_VALUE;
				return state;
			}
			
		case PARSER_VALUE:
			
			if(flags & IN_BACKSLASH)
			{
				flags &= ~IN_BACKSLASH;
				appendValue(c);
				return state;
			}
			else if(c == '\\')
			{
				flags |= IN_BACKSLASH;
				return state;
			}
			else if( ((c == '"') && (flags & IN_DQUOTES)) || ((c == '\'') && (flags & IN_QUOTES)))
			{
				flags = 0;
				appendValue(c);
				doCallback();
				state = PARSER_WAIT_SEPARATOR;
				return state;
			}
			else if( (flags & IN_QUOTES) || (flags & IN_DQUOTES))
			{
				appendValue(c);
				return state;
			}
			else if(isalnum(c) || c == '_' || c == '.' || c == '-')
			{
				appendValue(c);
				return state;
			}
			else if(c == ',')
			{
				flags = 0;
				doCallback();
				if(levels &0x01)
					state = PARSER_WAIT_VALUE;
				else
					state = PARSER_WAIT_NAME;
				return state;
			}
			else if(isspace(c))
			{
				flags = 0;
				doCallback();
				state = PARSER_WAIT_SEPARATOR;
				return state;
			}
			else if(c == '}' || c == ']')
			{
				if(level <= 0)
				{
					if(c == '}')
						state = PARSER_FINISHED;
					else
						state = PARSER_ERROR;
					return state;
				}
				doCallback();
				level--;
				levels = levels >> 1;
				state = PARSER_WAIT_SEPARATOR;
				return state;
			}
			else
			{
 void stopNote(int note) {
     doCallback(0x80, note, 0);
 }
 void startNote(int note, int velocity) {
     doCallback(0x90, note, velocity);
 }