Example #1
0
	// ICommon section
	result DRawDataStub::Invoke(const Call& call)
	{	
		DRawDataPtr events( CommonImpl< DRawData >::GetTarget() );
		if ( !events )
			return _E_CALLNOTARGET;

		if ( ConnectedFnIid == call.GetMethod() )
		{
			if ( call.GetArguments().size() < 1 )
				return _E_INVALIDARG;
			result code = events->Connected(call.GetArguments().at(0).toCommon());
			call.GetResults().clear();
			call.GetResults().push_back(code);
		}
		else if ( DataReceivedFnIid == call.GetMethod() )
		{
			if ( call.GetArguments().size() < 1 )
				return _E_INVALIDARG;
			result code = events->DataReceived(call.GetArguments().at(0).toCommon());
			call.GetResults().clear();
			call.GetResults().push_back(code);
		}
		else if ( DisconnectedFnIid == call.GetMethod() )
		{
			if ( call.GetArguments().size() < 1 )
				return _E_INVALIDARG;
			result code = events->Disconnected(call.GetArguments().at(0).toCommon());
			call.GetResults().clear();
			call.GetResults().push_back(code);
		}

		return _S_OK;
	}