3#include "ConnectLayer.h"
4#include <QLoggingCategory>
6static Q_LOGGING_CATEGORY(log,
"FreeRDP.Connect.Layer")
14 m_pParameter = connect->m_pParameter;
17CConnectLayer::~CConnectLayer()
19 qDebug(log) << Q_FUNC_INFO;
22int CConnectLayer::Initialize(rdpContext* context)
27 auto cb = freerdp_get_io_callbacks(context);
29 rdpTransportIo io = *cb;
30 io.ConnectLayer = cb_transport_connect_layer;
31 bRet = freerdp_set_io_callbacks(context, &io);
33 qCritical(log) <<
"Set freerdp io callback fail";
36 bRet = freerdp_set_io_callback_context(context,
this);
38 qCritical(log) <<
"Set freerdp io callback context fail";
41 return OnInit(context);
44int CConnectLayer::Clean()
51rdpTransportLayer* CConnectLayer::cb_transport_connect_layer(
52 rdpTransport* transport,
53 const char* hostname,
int port,
56 rdpContext* context = transport_get_context(transport);
62 if(!pThis)
return nullptr;
63 return pThis->OnTransportConnectLayer(context);
66rdpTransportLayer* CConnectLayer::OnTransportConnectLayer(rdpContext* context)
69 rdpTransportLayer* layer =
nullptr;
70 layer = transport_layer_new(freerdp_get_transport(context),
sizeof(LayerUserData));
73 LayerUserData* userData = (LayerUserData*)layer->userContext;
74 userData->pThis =
this;
75 layer->Read = cbLayerRead;
76 layer->Write = cbLayerWrite;
77 layer->Close = cbLayerClose;
78 layer->Wait = cbLayerWait;
79 layer->GetEvent = cbLayerGetEvent;
83int CConnectLayer::cbLayerRead(
void *userContext,
void *data,
int bytes)
86 if(!userContext)
return -1;
90 return pThis->OnLayerRead(data, bytes);
93int CConnectLayer::cbLayerWrite(
void *userContext,
const void *data,
int bytes)
95 if(!userContext)
return -1;
99 return pThis->OnLayerWrite(data, bytes);
102BOOL CConnectLayer::cbLayerClose(
void *userContext)
104 qDebug(log) << Q_FUNC_INFO;
105 if(!userContext)
return FALSE;
107 return pThis->OnLayerClose();
110BOOL CConnectLayer::OnLayerClose()
113 if(nRet)
return false;
117BOOL CConnectLayer::cbLayerWait(
void *userContext, BOOL waitWrite, DWORD timeout)
121 return pThis->OnLayerWait(waitWrite, timeout);
124HANDLE CConnectLayer::cbLayerGetEvent(
void *userContext)
128 return pThis->OnLayerGetEvent();