Lines Matching defs:conn

225 static void _crVBoxHGSMIReceiveMessage(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient);
542 static void *crVBoxHGSMIAlloc(CRConnection *conn)
550 pvBuf = _crVBoxHGSMIDoAlloc(pClient, conn->buffer_size);
583 static void _crVBoxHGSMIWriteExact(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient, PVBOXUHGSMI_BUFFER pBuf, uint32_t offStart, unsigned int len)
590 if (conn->u32InjectClientID)
600 parms->hdr.u32ClientID = conn->u32ClientID;
604 parms->u32ClientID = conn->u32InjectClientID;
636 parms->hdr.u32ClientID = conn->u32ClientID;
671 static void crVBoxHGSMIWriteExact(CRConnection *conn, const void *buf, unsigned int len)
682 // _crVBoxHGSMIWriteExact(conn, pClient, pBuf, 0, len);
687 static void _crVBoxHGSMIPollHost(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient)
698 parms->hdr.u32ClientID = conn->u32ClientID;
702 CRASSERT(!conn->pBuffer); //make sure there's no data to process
752 conn->pBuffer = pvData;
753 conn->cbBuffer = cbBuffer;
758 static void _crVBoxHGSMIReadExact(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient)
760 _crVBoxHGSMIPollHost(conn, pClient);
762 if (conn->cbBuffer)
763 _crVBoxHGSMIReceiveMessage(conn, pClient);
771 _crVBoxHGSMIWriteReadExact(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient, void *buf, uint32_t offBuffer, unsigned int len, bool bIsBuffer)
781 parms->hdr.u32ClientID = conn->u32ClientID;
787 CRASSERT(!conn->pBuffer); //make sure there's no data to process
875 conn->pBuffer = pvData;
876 conn->cbBuffer = cbWriteback;
877 _crVBoxHGSMIReceiveMessage(conn, pClient);
886 crDebug("Reallocating host buffer from %d to %d bytes", conn->cbHostBufferAllocated, cbWriteback);
897 _crVBoxHGSMIReadExact(conn, pClient/*, cbWriteback*/);
916 static void crVBoxHGSMISend(CRConnection *conn, void **bufp,
930 _crVBoxHGCMWriteBytes(conn, start, len);
932 CRASSERT(!conn->u32InjectClientID);
934 _crVBoxHGSMIWriteReadExact(conn, pClient, (void*)start, 0, len, false);
959 if (conn->u32InjectClientID)
961 _crVBoxHGSMIWriteExact(conn, pClient, pBuf, CRVBOXHGSMI_BUF_OFFSET(start, *bufp) + CRVBOXHGSMI_BUF_HDR_SIZE(), len);
966 _crVBoxHGSMIWriteReadExact(conn, pClient, pBuf, CRVBOXHGSMI_BUF_OFFSET(start, *bufp) + CRVBOXHGSMI_BUF_HDR_SIZE(), len, true);
980 static void crVBoxHGSMISingleRecv(CRConnection *conn, void *buf, unsigned int len)
995 _crVBoxHGSMIReadExact(conn, pClient);
999 static void _crVBoxHGSMIFree(CRConnection *conn, void *buf)
1015 conn->recv_credits += hgsmi_buffer->u32Len;
1026 static void crVBoxHGSMIFree(CRConnection *conn, void *buf)
1029 _crVBoxHGSMIFree(conn, buf);
1033 static void _crVBoxHGSMIReceiveMessage(CRConnection *conn, PCRVBOXHGSMI_CLIENT pClient)
1040 len = conn->cbBuffer;
1042 Assert(conn->pBuffer);
1044 CRASSERT(conn->pBuffer);
1047 if (conn->allow_redir_ptr)
1050 CRASSERT(conn->buffer_size >= sizeof(CRMessageRedirPtr));
1052 pSysBuf = _crVBoxHGSMISysMemAlloc( conn->buffer_size );
1058 msg->redirptr.pMessage = (CRMessageHeader*) (conn->pBuffer);
1063 conn->cbBuffer = 0;
1064 conn->pBuffer = NULL;
1069 if ( len <= conn->buffer_size )
1072 hgcm_buffer = (CRVBOXHGCMBUFFER *) crVBoxHGCMAlloc( conn ) - 1;
1090 _crVBoxHGCMReadBytes(conn, hgcm_buffer + 1, len);
1097 conn->recv_credits -= len;
1098 conn->total_bytes_recv += len;
1099 conn->recv_count++;
1101 crNetDispatchMessage( g_crvboxhgsmi.recv_list, conn, msg, len );
1110 _crVBoxHGSMIFree(conn, msg);
1114 static void crVBoxHGSMIReceiveMessage(CRConnection *conn)
1124 _crVBoxHGSMIReceiveMessage(conn, pClient);
1130 static void crVBoxHGSMIAccept( CRConnection *conn, const char *hostname, unsigned short port )
1135 CRASSERT(conn && conn->pHostBuffer);
1142 static int crVBoxHGSMISetVersion(CRConnection *conn, unsigned int vMajor, unsigned int vMinor)
1148 parms.hdr.u32ClientID = conn->u32ClientID;
1168 conn->vMajor = CR_PROTOCOL_VERSION_MAJOR;
1169 conn->vMinor = CR_PROTOCOL_VERSION_MINOR;
1174 static int crVBoxHGSMISetPID(CRConnection *conn, unsigned long long pid)
1180 parms.hdr.u32ClientID = conn->u32ClientID;
1206 static int crVBoxHGSMIDoConnect( CRConnection *conn )
1277 conn->u32ClientID = info.u32ClientID;
1278 crDebug("HGCM connect was successful: client id =0x%x\n", conn->u32ClientID);
1280 rc = crVBoxHGSMISetVersion(conn, CR_PROTOCOL_VERSION_MAJOR, CR_PROTOCOL_VERSION_MINOR);
1286 rc = crVBoxHGCMSetPID(conn, GetCurrentProcessId());
1288 rc = crVBoxHGCMSetPID(conn, crGetPID());
1319 static void crVBoxHGSMIDoDisconnect( CRConnection *conn )
1330 if (conn->pHostBuffer)
1332 crFree(conn->pHostBuffer);
1333 conn->pHostBuffer = NULL;
1334 conn->cbHostBuffer = 0;
1335 conn->cbHostBufferAllocated = 0;
1338 conn->pBuffer = NULL;
1339 conn->cbBuffer = 0;
1342 if (conn->type == CR_VBOXHGCM)
1346 if (conn->index < g_crvboxhgsmi.num_conns)
1348 g_crvboxhgsmi.conns[conn->index] = g_crvboxhgsmi.conns[g_crvboxhgsmi.num_conns];
1349 g_crvboxhgsmi.conns[conn->index]->index = conn->index;
1351 else g_crvboxhgsmi.conns[conn->index] = NULL;
1353 conn->type = CR_NO_CONNECTION;
1358 if (conn->u32ClientID)
1361 info.u32ClientID = conn->u32ClientID;
1389 conn->u32ClientID = 0;
1412 static void crVBoxHGSMIInstantReclaim(CRConnection *conn, CRMessage *mess)
1417 _crVBoxHGSMIFree(conn, mess);
1423 static void crVBoxHGSMIHandleNewMessage( CRConnection *conn, CRMessage *msg, unsigned int len )
1574 void crVBoxHGSMIConnection(CRConnection *conn)
1581 conn->type = CR_VBOXHGCM;
1582 conn->Alloc = crVBoxHGSMIAlloc;
1583 conn->Send = crVBoxHGSMISend;
1584 conn->SendExact = crVBoxHGSMIWriteExact;
1585 conn->Recv = crVBoxHGSMISingleRecv;
1586 conn->RecvMsg = crVBoxHGSMIReceiveMessage;
1587 conn->Free = crVBoxHGSMIFree;
1588 conn->Accept = crVBoxHGSMIAccept;
1589 conn->Connect = crVBoxHGSMIDoConnect;
1590 conn->Disconnect = crVBoxHGSMIDoDisconnect;
1591 conn->InstantReclaim = crVBoxHGSMIInstantReclaim;
1592 conn->HandleNewMessage = crVBoxHGSMIHandleNewMessage;
1593 conn->index = g_crvboxhgsmi.num_conns;
1594 conn->sizeof_buffer_header = sizeof(CRVBOXHGSMIBUFFER);
1595 conn->actual_network = 1;
1597 conn->krecv_buf_size = 0;
1599 conn->pBuffer = NULL;
1600 conn->cbBuffer = 0;
1601 conn->allow_redir_ptr = 1;
1604 conn->cbHostBufferAllocated = 0;//2*1024;
1605 conn->pHostBuffer = NULL;//(uint8_t*) crAlloc(conn->cbHostBufferAllocated);
1606 // CRASSERT(conn->pHostBuffer);
1607 conn->cbHostBuffer = 0;
1612 conn->index = i;
1613 g_crvboxhgsmi.conns[i] = conn;
1623 g_crvboxhgsmi.conns[g_crvboxhgsmi.num_conns++] = conn;
1636 CRConnection *conn = g_crvboxhgsmi.conns[i];
1638 if ( !conn || conn->type == CR_NO_CONNECTION )
1641 if (!conn->pBuffer)
1644 _crVBoxHGSMIPollHost(conn, pClient);
1651 CRConnection *conn = g_crvboxhgsmi.conns[i];
1653 if ( !conn || conn->type == CR_NO_CONNECTION )
1656 if (conn->cbBuffer>0)
1659 _crVBoxHGSMIReceiveMessage(conn, pClient);