const RId IFileContainer::maxRId()
	{
		++m_lMaxRid;
		return RId(m_lMaxRid);
	}
Esempio n. 2
0
STDMETHODIMP CCoFAViewer::HandleRequest(BSTR dstUserId,ULONG dstSvcId,BSTR srcUserId,ULONG srcSvcId,ULONG rId,ULONG rType,ULONG param,BSTR params)
{
TRY_CATCH_COM

	Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest()"));

	USES_CONVERSION;
	switch(rType)
	{
		case BRT_PING:
			{
				Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_PING)"));
				if(!m_brokerEvents.m_dwCookie)
					throw MCException("_IBrokerClientEvents has not set. Call IBrokerClient::Init() method at first");
				HRESULT result;
				CComPtr<_IBrokerClientEvents> brokerEvents;
				if(S_OK!=(result=m_brokerEvents.CopyTo(&brokerEvents)))
					throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),tstring(_T("IBrokerClientEvents obtaining failed in Broker")),result);
				if(!brokerEvents.p)
					throw MCException("_IBrokerClientEvents has not marshaled");
				brokerEvents->RequestSent(srcUserId,srcSvcId,srcUserId,dstSvcId,rId,rType|BRT_RESPONSE,param,params);//response on ping
			}
			break;
		case BRT_PING|BRT_RESPONSE:
			{
				Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_PING|BRT_RESPONSE)"));
			}
			break;
		case BRT_SERVICE|BRT_RESPONSE:
			{
				Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_SERVICE|BRT_RESPONSE)"));

				if(BRR_BPFAILED==param)
				{
					if (NULL != m_commandManager.get())
					{
						m_commandManager->ShowStatusMessage(Format(BRT_SERVICE_BPFAILED,OLE2T(params)), EFMS_PERMISSION_DENIED);
						m_commandManager->EnableRequestButton();
					}
				}
				else if(BRR_ERROR==param)
				{
					if (NULL != m_commandManager.get())
					{
						m_commandManager->ShowStatusMessage(Format(_T("%s. Request handling failed"),BRT_SERVICE_DECLINED), EFMS_PERMISSION_DENIED);
						m_commandManager->EnableRequestButton();
					}
				}
				else if(BRR_DECLINED==param)
				{
					if (NULL != m_commandManager.get())
					{
						m_commandManager->ShowStatusMessage(BRT_SERVICE_DECLINED, EFMS_PERMISSION_DENIED);
						m_commandManager->EnableRequestButton();
					}
				}
				else if(BRR_APPROVED==param)
				{
					if (NULL != m_commandManager.get())
					{
						m_commandManager->ShowStatusMessage(BRT_SERVICE_APPROVED, EFMS_PERMISSION_RECEIVED);
						m_commandManager->EnableRequestButton();
					}
					if(!m_brokerEvents.m_dwCookie)
						throw MCException("_IBrokerClientEvents has not set. Call IBrokerClient::Init() method at first");
					HRESULT result;
					CComPtr<_IBrokerClientEvents> brokerEvents;
					if(S_OK!=(result=m_brokerEvents.CopyTo(&brokerEvents)))
						throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),tstring(_T("IBrokerClientEvents obtaining failed in Broker")),result);
					if(!brokerEvents.p)
						throw MCException("_IBrokerClientEvents has not marshaled");

					if((result=brokerEvents->GetSubStream(CComBSTR(BUSERIDPDV_AUTOSET), BSVCIDPDV_AUTOSET, FASSID_MAIN, FASSP_SERVICE))!=S_OK)
						MLog_Exception(CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),tstring(_T("Service substream obtaining failed")),result))
					/// Requesting information for logger init
					brokerEvents->RequestSent(CComBSTR(BUSERIDPDV_LOCAL),BSVCIDPDV_BROKER,CComBSTR(BUSERIDPDV_AUTOSET),BSVCIDPDV_AUTOSET,RId(),BRT_GET_SERVICE_INFO,0,CComBSTR(_T("")));
				}
				else if(BRR_BUSY==param)
				{
					if (NULL != m_commandManager.get())
					{
						//m_commandManager->ShowStatusMessage(BRT_SERVICE_BUSY);
						m_commandManager->ShowStatusMessage(_T("Another service is waiting for customer approval or installation. Please try again."), EFMS_PERMISSION_DENIED);
						m_commandManager->EnableRequestButton();
					}
				}
				else
				{
					// TODO: show progress: SCriptEngine response is unknown (code=0x%x) %s"),param,OLE2T(params)));
					if (NULL != m_commandManager.get())
					{
						m_commandManager->ShowStatusMessage(Format(_T("File Manager response is unknown (code=0x%x) %s"),param,OLE2T(params)));
						m_commandManager->EnableRequestButton();
					}
					MLog_Exception(CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),_T("Responce type is unknown. HandleRequest(%s,0x%x,%s,0x%x,0x%x,0x%x,0x%x,%s)"),OLE2T(dstUserId),dstSvcId,OLE2T(srcUserId),srcSvcId,rId,rType,param,OLE2T(params)));
				}
			}
			break;
		case BRT_INSTALLATION:
			Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_INSTALLATION)"));

			if (NULL != m_commandManager.get())
				if(param)
					m_commandManager->ShowStatusMessage(Format(BRT_INSTALLATION_EXFORMAT,OLE2T(params),param), EFMS_INSTALLATION_PROGRESS);
				else
					m_commandManager->ShowStatusMessage(_OLE2T(params), EFMS_INSTALLATION_PROGRESS);
			break;
		case BRT_NWL_DISCONNECTED:
			{
				Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_NWL_DISCONNECTED)"));

				PostMessage(m_msgSessionStopped, STREAM_ERROR, 0);
			}
			break;
		case BRT_GET_SERVICE_INFO|BRT_RESPONSE:
			Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_GET_SERVICE_INFO|BRT_RESPONSE)"));

			if (NULL != m_commandManager.get())
			{
				tstring sid = _T("unknown");
				tstring expertName = _T("unknown");
				tstring customerName = _T("unknown");
				USES_CONVERSION;
				std::vector<tstring> info = tokenize(_OLE2T(params), _T(";"));
				//params="[userId];;[UserName];;[remoteUserId];;[remoteUserName];;[sId]"
				if (info.size() != 5)
					Log.Add(_ERROR_,_T("Unknown BRT_GET_SERVICE_INFO response string format %s"),W2T(params));
				else
				{
					sid = info[4];
					customerName = Format(_T("%s[%s]"),info[3].c_str(),info[2].c_str());
					expertName = Format(_T("%s[%s]"),info[1].c_str(),info[0].c_str());
				}
				m_commandManager->InitTransferLogging(sid, customerName, expertName);
			}
			break;
		case BRT_CONNECTION:
			Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_CONNECTION)"));

			if (NULL != m_commandManager.get())
			{
				m_commandManager->ShowStatusMessage(_OLE2T(params), EFMS_PERMISSION_REQUEST_SENT);
				m_commandManager->EnableRequestButton(FALSE);
			}
			break;
		case BRT_STOP_SERVICE:
			{
				Log.Add(_MESSAGE_,_T("CCoFAViewer::HandleRequest(BRT_STOP_SERVICE)"));

				PostMessage(m_msgSessionStopped, REMOTE_STOP, 0);
				/// Reporting state to customer's JS
				if(!m_brokerEvents.m_dwCookie)
					throw MCException("_IBrokerClientEvents has not set. Call IBrokerClient::Init() method at first");
				HRESULT result;
				CComPtr<_IBrokerClientEvents> brokerEvents;
				if(S_OK!=(result=m_brokerEvents.CopyTo(&brokerEvents)))
					throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),tstring(_T("IBrokerClientEvents obtaining failed in Broker")),result);
				if(!brokerEvents.p)
					throw MCException("_IBrokerClientEvents has not marshaled");
				brokerEvents->RequestSent(CComBSTR(BUSERIDPDV_AUTOSET),BSVCIDPDV_JS,CComBSTR(BUSERIDPDV_AUTOSET),BSVCIDPDV_AUTOSET,RId()/*rid*/,BRT_SRV_STATE_CHANGED,ESM_SERVICE_STOPPED/*off*/,CComBSTR(_T("File manager"))); //TODO: treat name carefully
			}
			break;
		default:
			throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),_T("Request type is unknown. HandleRequest(%s,0x%x,%s,0x%x,0x%x,0x%x,0x%x,%s)"),OLE2T(dstUserId),dstSvcId,OLE2T(srcUserId),srcSvcId,rId,rType,param,OLE2T(params));
	}
CATCH_LOG_COM
}
Esempio n. 3
0
LRESULT CCoFAViewer::OnMouseActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
TRY_CATCH

	HRESULT result;
	if(!m_brokerEvents.m_dwCookie)
		throw MCException("_IBrokerClientEvents has not set. Call IBrokerClient::Init() method at first");
	CComPtr<_IBrokerClientEvents> brokerEvents;
	if(S_OK!=(result=m_brokerEvents.CopyTo(&brokerEvents)))
		throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),tstring(_T("IBrokerClientEvents obtaining failed in Broker")),result);
	if(!brokerEvents.p)
		throw MCException("_IBrokerClientEvents has not marshaled");

	brokerEvents->RequestSent(CComBSTR(BUSERIDPDV_LOCAL),BSVCIDPDV_JS,CComBSTR(BUSERIDPDV_AUTOSET),BSVCIDPDV_AUTOSET,RId(),BRT_SELECT_WIDGET,0,CComBSTR(_T("empty")));

	return MA_ACTIVATE;

CATCH_THROW()
}
Esempio n. 4
0
void CCoFAViewer::OnSendRequestBtn()
{
TRY_CATCH

	// Sending accept deny request
	//tstring& reqParams=Format(BRT_SERVICE_FATEXT, 0/*Permission?*/);
	tstring& reqParams=Format(BRT_SERVICE_FAFORMAT,BRT_SERVICE_FATEXT,BRT_SERVICE_APPROVE,BRT_SERVICE_DECLINE);
	if (NULL != m_commandManager.get())
	{
		m_commandManager->ShowStatusMessage(BRT_SERVICE_WAITING_APPROVE, EFMS_PERMISSION_REQUEST_SENT);
		m_commandManager->EnableRequestButton(FALSE);
	}

	if(!m_brokerEvents.m_dwCookie)
		throw MCException("_IBrokerClientEvents has not set. Call IBrokerClient::Init() method at first");
	HRESULT result;
	CComPtr<_IBrokerClientEvents> brokerEvents;
	if(S_OK!=(result=m_brokerEvents.CopyTo(&brokerEvents)))
		throw CExceptionBase(__LINE__,_T(__FILE__),_T(__DATE__),tstring(_T("IBrokerClientEvents obtaining failed in Broker")),result);
	if(!brokerEvents.p)
		throw MCException("_IBrokerClientEvents has not marshaled");

	brokerEvents->RequestSent(CComBSTR(BUSERIDPDV_AUTOSET),BSVCIDPDV_BROKER,CComBSTR(BUSERIDPDV_AUTOSET),BSVCIDPDV_AUTOSET,RId(),BRT_SERVICE,BST_FAHOST,CComBSTR(reqParams.c_str()));
CATCH_LOG()
}