cms::Message::Ptr CTOSReqEndTestFrame::getMessage()
{
	cms::Message::Ptr pMessage(new cms::Message());
	pMessage->write(m_nFrameType);
	pMessage->write(m_strReqInfo);
	return pMessage;
}
cms::Message::Ptr STOCAckBeginTestFrame::getMessage()
{
	cms::Message::Ptr pMessage(new cms::Message());
	pMessage->write(m_nFrameType);
	pMessage->write(m_strACKInfo);
	return pMessage;
}
Пример #3
0
boost::shared_ptr<::rapidmsg::RMessage> NewMessage(const string& session_no,
        int message_type) {
    boost::shared_ptr<::rapidmsg::RMessage> pMessage(new ::rapidmsg::RMessage);
    pMessage->mutable_head()->set_session_no(session_no);
    pMessage->mutable_head()->set_message_type(message_type);

    return pMessage;
}
cms::Message::Ptr CTOSReqUserLogOutFrame::getMessage()
{
	cms::Message::Ptr pMessage(new cms::Message());
	pMessage->write(m_nFrameType);
	pMessage->write(m_nClientType);
	pMessage->write(m_strUserName);
	pMessage->write(m_strPwd);
	pMessage->write(m_strReqInfo);
	return pMessage;
}
void CBrowserLauncher::LaunchBrowserWithLinkL(const TDesC& aLink) {
	TUint aMajor = 0, aMinor = 0;
	TUid aBrowserAppUid = {0x10008D39};

	// Check platform version
	GetPlatformVersionL(aMajor, aMinor);

	if(aMajor < 3 || aMajor == 3 && aMinor == 0) {
		aBrowserAppUid = TUid::Uid(0x1020724D);
	}
	
	// Create custom message
	HBufC* aMessage = HBufC::NewLC(2 + aLink.Length());
	TPtr pMessage(aMessage->Des());
	pMessage.Append(_L("4 "));
	pMessage.Append(aLink);

	// Find task
	TApaTaskList aTaskList(CEikonEnv::Static()->WsSession());
	TApaTask aTask = aTaskList.FindApp(aBrowserAppUid);

	if(aTask.Exists()) {
		aTask.BringToForeground();
		HBufC8* aMessage8 = HBufC8::NewLC(pMessage.Length());
		TPtr8 pMessage8(aMessage8->Des());
		pMessage8.Append(pMessage);

		aTask.SendMessage(TUid::Uid(0), pMessage8);
		CleanupStack::PopAndDestroy(); // aMessage8
	}
	else {
		RApaLsSession aApaLsSession;
		if(aApaLsSession.Connect() == KErrNone) {
			TThreadId aThread;
			aApaLsSession.StartDocument(pMessage, aBrowserAppUid, aThread);
			aApaLsSession.Close();
		}
	}

	CleanupStack::PopAndDestroy(); // aMessage
}
Пример #6
0
void RTMFPFlow::onFragment(UInt64 _stage,PacketReader& fragment,UInt8 flags) {
	if(_stage<=this->_stage) {
		ERROR("Stage ",_stage," not sorted on flow ",id);
		return;
	}
	if(_stage>(this->_stage+1)) {
		// not following _stage!
		UInt32 lostCount = (UInt32)(_stage-this->_stage-1);
		(UInt64&)this->_stage = _stage;
		if(_pPacket) {
			delete _pPacket;
			_pPacket = NULL;
		}
		if(flags&MESSAGE_WITH_BEFOREPART) {
			_numberLostFragments += (lostCount+1);
			return;
		}
		_numberLostFragments += lostCount;
	} else
		(UInt64&)this->_stage = _stage;

	// If MESSAGE_ABANDONMENT, content is not the right normal content!
	if(flags&MESSAGE_ABANDONMENT) {
		if(_pPacket) {
			delete _pPacket;
			_pPacket = NULL;
		}
		return;
	}

	PacketReader* pMessage(&fragment);
	double lostRate(1);

	if(flags&MESSAGE_WITH_BEFOREPART){
		if(!_pPacket) {
			WARN("A received message tells to have a 'beforepart' and nevertheless partbuffer is empty, certainly some packets were lost");
			++_numberLostFragments;
			delete _pPacket;
			_pPacket = NULL;
			return;
		}
		
		_pPacket->add(fragment);

		if(flags&MESSAGE_WITH_AFTERPART)
			return;

		lostRate = _pPacket->fragments;
		pMessage = _pPacket->release();
	} else if(flags&MESSAGE_WITH_AFTERPART) {
		if(_pPacket) {
			ERROR("A received message tells to have not 'beforepart' and nevertheless partbuffer exists");
			_numberLostFragments += _pPacket->fragments;
			delete _pPacket;
		}
		_pPacket = new RTMFPPacket(_poolBuffers,fragment);
		return;
	}

	UInt32 time(0);
	AMF::ContentType type(unpack(*pMessage, time));

	lostRate = _numberLostFragments/(lostRate+_numberLostFragments);

	if (!_pStream || !_pStream->process(type, time, *pMessage, *_pWriter, lostRate)) {
		complete(); // do already the delete _pPacket
		return;
	}

	_numberLostFragments=0;

	if(_pPacket) {
		delete _pPacket;
		_pPacket=NULL;
	}
	
}
Пример #7
0
void Flow::fragmentSortedHandler(UInt64 stage,PacketReader& fragment,UInt8 flags) {
	if(stage<=this->stage) {
		ERROR("Stage %llu not sorted on flow %llu",stage,id);
		return;
	}
	if(stage>(this->stage+1)) {
		// not following stage!
		UInt32 lostCount = (UInt32)(stage-this->stage-1);
		(UInt64&)this->stage = stage;
		if(_pPacket) {
			delete _pPacket;
			_pPacket = NULL;
		}
		if(flags&MESSAGE_WITH_BEFOREPART) {
			lostFragmentsHandler(lostCount+1);
			return;
		}
		lostFragmentsHandler(lostCount);
	} else
		(UInt64&)this->stage = stage;

	// If MESSAGE_ABANDONMENT, content is not the right normal content!
	if(flags&MESSAGE_ABANDONMENT) {
		if(_pPacket) {
			delete _pPacket;
			_pPacket = NULL;
		}
		return;
	}

	PacketReader* pMessage(&fragment);
	if(flags&MESSAGE_WITH_BEFOREPART){
		if(!_pPacket) {
			WARN("A received message tells to have a 'beforepart' and nevertheless partbuffer is empty, certainly some packets were lost");
			lostFragmentsHandler(1);
			delete _pPacket;
			_pPacket = NULL;
			return;
		}
		
		_pPacket->add(fragment);

		if(flags&MESSAGE_WITH_AFTERPART)
			return;

		pMessage = _pPacket->release();
	} else if(flags&MESSAGE_WITH_AFTERPART) {
		if(_pPacket) {
			ERROR("A received message tells to have not 'beforepart' and nevertheless partbuffer exists");
			lostFragmentsHandler(_pPacket->fragments);
			delete _pPacket;
		}
		_pPacket = new Packet(fragment);
		return;
	}

	Message::Type type = unpack(*pMessage);

	if(type!=Message::EMPTY) {
		writer._callbackHandle = 0;
		string name;
		AMFReader amf(*pMessage);
		if(type==Message::AMF_WITH_HANDLER || type==Message::AMF) {
			amf.read(name);
			if(type==Message::AMF_WITH_HANDLER) {
				writer._callbackHandle = amf.readNumber();
				if(amf.followingType()==AMF::Null)
					amf.readNull();
			}
		}

		try {
			switch(type) {
				case Message::AMF_WITH_HANDLER:
				case Message::AMF:
					messageHandler(name,amf);
					break;
				case Message::AUDIO:
					audioHandler(*pMessage);
					break;
				case Message::VIDEO:
					videoHandler(*pMessage);
					break;
				default:
					rawHandler(type,*pMessage);
			}
		} catch(Exception& ex) {
			_error = "flow error, " + ex.displayText();
		} catch(exception& ex) {
			_error = string("flow error, ") + ex.what();
		} catch(...) {
			_error = "Unknown flow error";
		}
	}
	writer._callbackHandle = 0;

	if(_pPacket) {
		delete _pPacket;
		_pPacket=NULL;
	}

	if(flags&MESSAGE_END)
		complete();
	
}
Пример #8
0
void Flow::messageHandler(UInt32 stage,PacketReader& message,UInt8 flags) {
	if(_completed)
		return;

	if(stage<=_stage) {
		DEBUG("Stage %u on flow %u has already been received",stage,id);
		return;
	}
	_stage = stage;

	PacketReader* pMessage(NULL);
	if(flags&MESSAGE_WITH_BEFOREPART){
		if(_sizeBuffer==0) {
			ERROR("A received message tells to have a 'afterpart' and nevertheless partbuffer is empty");
			return;
		}
		
		UInt8* pOldBuffer = _pBuffer;
		_pBuffer = new UInt8[_sizeBuffer + message.available()]();
		memcpy(_pBuffer,pOldBuffer,_sizeBuffer);
		memcpy(_pBuffer+_sizeBuffer,message.current(),message.available());
		_sizeBuffer += message.available();
		delete [] pOldBuffer;

		if(flags&MESSAGE_WITH_AFTERPART)
			return;

		pMessage = new PacketReader(_pBuffer,_sizeBuffer);
	} else if(flags&MESSAGE_WITH_AFTERPART) {
		if(_sizeBuffer>0) {
			ERROR("A received message tells to have not 'beforepart' and nevertheless partbuffer exists");
			delete [] _pBuffer;
			_sizeBuffer=0;
		}
		_sizeBuffer = message.available();
		_pBuffer = new UInt8[_sizeBuffer]();
		memcpy(_pBuffer,message.current(),_sizeBuffer);
		return;
	}
	if(!pMessage)
		pMessage = new PacketReader(message);

	UInt8 type = unpack(*pMessage);
	if(type!=EMPTY) {
		writer._callbackHandle = 0;
		string name;
		AMFReader amf(*pMessage);
		if(type==AMF_WITH_HANDLER || type==AMF) {
			amf.read(name);
			if(type==AMF_WITH_HANDLER) {
				writer._callbackHandle = amf.readNumber();
				amf.skipNull();
			}
		}

		// create code prefix
		writer._code.assign(_name);
		if(!name.empty()) {
			writer._code.append(".");
			writer._code.push_back(toupper(name[0]));
			if(name.size()>1)
				writer._code.append(&name[1]);
		}

		switch(type) {
			case AMF_WITH_HANDLER:
			case AMF:
				messageHandler(name,amf);
				break;
			case AUDIO:
				audioHandler(*pMessage);
				break;
			case VIDEO:
				videoHandler(*pMessage);
				break;
			default:
				rawHandler(type,*pMessage);
		}
	}

	delete pMessage;

	if(flags&MESSAGE_END)
		complete();

	if(_sizeBuffer>0) {
		delete [] _pBuffer;
		_sizeBuffer=0;
	}
}