VirtualBox

Changeset 87452 in vbox for trunk/src/VBox/Additions


Ignore:
Timestamp:
Jan 27, 2021 5:11:25 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142470
Message:

Shared Clipboard/Transfers: More code for HTTP transfers. bugref:9437

Location:
trunk/src/VBox/Additions
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/VBoxTray/VBoxClipboard.cpp

    r86949 r87452  
    8585*********************************************************************************************************************************/
    8686#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    87 static DECLCALLBACK(int)  vboxClipboardOnTransferInitCallback(PSHCLTRANSFERCALLBACKDATA pData);
    88 static DECLCALLBACK(int)  vboxClipboardOnTransferStartCallback(PSHCLTRANSFERCALLBACKDATA pData);
    89 static DECLCALLBACK(void) vboxClipboardOnTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc);
    90 static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc);
     87static DECLCALLBACK(int)  vboxClipboardOnTransferInitCallback(PSHCLTXPROVIDERCTX pCtx);
     88static DECLCALLBACK(int)  vboxClipboardOnTransferStartCallback(PSHCLTXPROVIDERCTX pCtx);
     89static DECLCALLBACK(void) vboxClipboardOnTransferCompleteCallback(PSHCLTXPROVIDERCTX pCtx, int rc);
     90static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTXPROVIDERCTX pCtx, int rc);
    9191#endif
    9292
     
    9999 * @param   pData               Callback data to cleanup.
    100100 */
    101 static void vboxClipboardTransferCallbackCleanup(PSHCLTRANSFERCALLBACKDATA pData)
     101static void vboxClipboardTransferCallbackCleanup(PSHCLTXPROVIDERCTX pCtx)
    102102{
    103103    LogFlowFuncEnter();
     
    124124}
    125125
    126 static DECLCALLBACK(int)  vboxClipboardOnTransferInitCallback(PSHCLTRANSFERCALLBACKDATA pData)
     126static DECLCALLBACK(int)  vboxClipboardOnTransferInitCallback(PSHCLTXPROVIDERCTX pCtx)
    127127{
    128128    PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser;
     
    136136}
    137137
    138 static DECLCALLBACK(int) vboxClipboardOnTransferStartCallback(PSHCLTRANSFERCALLBACKDATA pData)
     138static DECLCALLBACK(int) vboxClipboardOnTransferStartCallback(PSHCLTXPROVIDERCTX pCtx)
    139139{
    140140    PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser;
     
    192192}
    193193
    194 static DECLCALLBACK(void) vboxClipboardOnTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc)
     194static DECLCALLBACK(void) vboxClipboardOnTransferCompleteCallback(PSHCLTXPROVIDERCTX pCtx, int rc)
    195195{
    196196    PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser;
     
    206206}
    207207
    208 static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc)
     208static DECLCALLBACK(void) vboxClipboardOnTransferErrorCallback(PSHCLTXPROVIDERCTX pCtx, int rc)
    209209{
    210210    PSHCLCONTEXT pCtx = (PSHCLCONTEXT)pData->pvUser;
  • trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp

    r86949 r87452  
    16631663*********************************************************************************************************************************/
    16641664
    1665 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceGetRoots(PSHCLPROVIDERCTX pCtx, PSHCLROOTLIST *ppRootList)
     1665static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceGetRoots(PSHCLTXPROVIDERCTX pCtx, PSHCLROOTLIST *ppRootList)
    16661666{
    16671667    LogFlowFuncEnter();
     
    16761676}
    16771677
    1678 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListOpen(PSHCLPROVIDERCTX pCtx, PSHCLLISTOPENPARMS pOpenParms,
     1678static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListOpen(PSHCLTXPROVIDERCTX pCtx, PSHCLLISTOPENPARMS pOpenParms,
    16791679                                                              PSHCLLISTHANDLE phList)
    16801680{
     
    16901690}
    16911691
    1692 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListClose(PSHCLPROVIDERCTX pCtx, SHCLLISTHANDLE hList)
     1692static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListClose(PSHCLTXPROVIDERCTX pCtx, SHCLLISTHANDLE hList)
    16931693{
    16941694    LogFlowFuncEnter();
     
    17031703}
    17041704
    1705 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListHdrRead(PSHCLPROVIDERCTX pCtx,
     1705static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListHdrRead(PSHCLTXPROVIDERCTX pCtx,
    17061706                                                                 SHCLLISTHANDLE hList, PSHCLLISTHDR pListHdr)
    17071707{
     
    17261726}
    17271727
    1728 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListEntryRead(PSHCLPROVIDERCTX pCtx,
     1728static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceListEntryRead(PSHCLTXPROVIDERCTX pCtx,
    17291729                                                                   SHCLLISTHANDLE hList, PSHCLLISTENTRY pEntry)
    17301730{
     
    17401740}
    17411741
    1742 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceObjOpen(PSHCLPROVIDERCTX pCtx,
     1742static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceObjOpen(PSHCLTXPROVIDERCTX pCtx,
    17431743                                                             PSHCLOBJOPENCREATEPARMS pCreateParms, PSHCLOBJHANDLE phObj)
    17441744{
     
    17541754}
    17551755
    1756 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceObjClose(PSHCLPROVIDERCTX pCtx, SHCLOBJHANDLE hObj)
     1756static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceObjClose(PSHCLTXPROVIDERCTX pCtx, SHCLOBJHANDLE hObj)
    17571757{
    17581758    LogFlowFuncEnter();
     
    17671767}
    17681768
    1769 static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceObjRead(PSHCLPROVIDERCTX pCtx,
     1769static DECLCALLBACK(int) vbglR3ClipboardTransferIfaceObjRead(PSHCLTXPROVIDERCTX pCtx,
    17701770                                                             SHCLOBJHANDLE hObj, void *pvData, uint32_t cbData,
    17711771                                                             uint32_t fFlags, uint32_t *pcbRead)
     
    18031803    if (RT_SUCCESS(rc))
    18041804    {
    1805         ShClTransferSetCallbacks(pTransfer, &pCmdCtx->Transfers.Callbacks);
    1806 
    1807         rc = ShClTransferCtxTransferRegisterByIndex(pTransferCtx, pTransfer, uTransferID);
     1805        rc = ShClTransferInit(pTransfer, enmDir, enmSource);
    18081806        if (RT_SUCCESS(rc))
    18091807        {
    1810             rc = ShClTransferInit(pTransfer, uTransferID, enmDir, enmSource);
     1808            rc = ShClTransferCtxTransferRegisterById(pTransferCtx, pTransfer, uTransferID);
    18111809            if (RT_SUCCESS(rc))
    18121810            {
     
    18151813                if (enmDir == SHCLTRANSFERDIR_FROM_REMOTE)
    18161814                {
    1817                     SHCLPROVIDERCREATIONCTX creationCtx;
     1815                    SHCLTXPROVIDERCREATIONCTX creationCtx;
    18181816                    RT_ZERO(creationCtx);
    18191817
     
    18311829                    creationCtx.pvUser = pCmdCtx;
    18321830
    1833                     rc = ShClTransferSetInterface(pTransfer, &creationCtx);
     1831                    rc = ShClTransferSetProviderIface(pTransfer, &creationCtx);
    18341832                }
    18351833
     
    18861884    int rc;
    18871885
    1888     PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx, uTransferID);
     1886    PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx, uTransferID);
    18891887    if (pTransfer)
    18901888    {
    1891         rc = ShClTransferClose(pTransfer);
    1892         if (RT_SUCCESS(rc))
    1893             rc = ShClTransferCtxTransferUnregister(pTransferCtx, uTransferID);
    1894 
     1889        rc = ShClTransferCtxTransferUnregister(pTransferCtx, uTransferID);
    18951890        if (RT_SUCCESS(rc))
    18961891        {
     
    20122007                if (RT_SUCCESS(rc))
    20132008                {
    2014                     PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2015                                                                         VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2009                    PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2010                                                                             VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    20162011                    AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    20172012
     
    20352030                if (RT_SUCCESS(rc))
    20362031                {
    2037                     PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2038                                                                          VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2032                    PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2033                                                                             VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    20392034                    AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    20402035
     
    20562051                    if (RT_SUCCESS(rc))
    20572052                    {
    2058                         PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2059                                                                              VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2053                        PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2054                                                                                 VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    20602055                        AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    20612056
     
    20822077                if (RT_SUCCESS(rc))
    20832078                {
    2084                     PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2085                                                                          VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2079                    PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2080                                                                             VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    20862081                    AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    20872082
     
    21052100                if (RT_SUCCESS(rc))
    21062101                {
    2107                     PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2108                                                                          VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2102                    PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2103                                                                             VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    21092104                    AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    21102105
     
    21352130                    if (RT_SUCCESS(rc))
    21362131                    {
    2137                         PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2138                                                                              VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2132                        PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2133                                                                                 VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    21392134                        AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    21402135
     
    21682163                    if (RT_SUCCESS(rc))
    21692164                    {
    2170                         PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2171                                                                              VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2165                        PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2166                                                                                 VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    21722167                        AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    21732168
     
    21922187                if (RT_SUCCESS(rc))
    21932188                {
    2194                     PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
    2195                                                                          VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
     2189                    PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
     2190                                                                             VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    21962191                    AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
    21972192
     
    22142209                if (RT_SUCCESS(rc))
    22152210                {
    2216                     PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransfer(pTransferCtx,
     2211                    PSHCLTRANSFER pTransfer = ShClTransferCtxGetTransferById(pTransferCtx,
    22172212                                                                         VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->idContext));
    22182213                    AssertPtrBreakStmt(pTransfer, rc = VERR_NOT_FOUND);
  • trunk/src/VBox/Additions/x11/VBoxClient/clipboard.cpp

    r87082 r87452  
    5858
    5959
    60 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    61 static DECLCALLBACK(int) vbclShClOnTransferInitCallback(PSHCLTRANSFERCALLBACKDATA pData)
    62 {
    63 # ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
    64     return ShClFuseOnTransferInitCallback(pData);
    65 # else
    66     RT_NOREF(pData);
    67     return VERR_NOT_IMPLEMENTED;
    68 # endif
    69 }
    70 
    71 static DECLCALLBACK(int)  vbclShClOnTransferStartCallback(PSHCLTRANSFERCALLBACKDATA pData)
    72 {
    73 # ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
    74     return ShClFuseOnTransferStartCallback(pData);
    75 # else
    76     RT_NOREF(pData);
    77     return VERR_NOT_IMPLEMENTED;
    78 # endif
    79 }
    80 
    81 static DECLCALLBACK(void) vbclShClOnTransferCompleteCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc)
    82 {
    83 # ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
    84     return ShClFuseOnTransferCompleteCallback(pData, rc);
    85 # else
    86     RT_NOREF(pData, rc);
    87 # endif
    88 }
    89 
    90 static DECLCALLBACK(void) vbclShClOnTransferErrorCallback(PSHCLTRANSFERCALLBACKDATA pData, int rc)
    91 {
    92 # ifdef VBOX_WITH_SHARED_CLIPBOARD_FUSE
    93     return ShClFuseOnTransferErrorCallback(pData, rc);
    94 # else
    95     RT_NOREF(pData, rc);
    96 # endif
    97 }
    98 #endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS */
    99 
    100 /**
    101  * Callback implementation for getting clipboard data from the host.
    102  *
    103  * @returns VBox status code. VERR_NO_DATA if no data available.
    104  * @param   pCtx                Our context information.
    105  * @param   uFmt                The format of the data being requested.
    106  * @param   ppv                 Returns an allocated buffer with data read from the host on success.
    107  *                              Needs to be free'd with RTMemFree() by the caller.
    108  * @param   pcb                 Returns the amount of data read (in bytes) on success.
    109  */
     60/** @copydoc ShClX11RequestDataForX11Callback */
    11061DECLCALLBACK(int) ShClX11RequestDataForX11Callback(PSHCLCONTEXT pCtx, SHCLFORMAT uFmt, void **ppv, uint32_t *pcb)
    11162{
     
    11869    {
    11970        //rc = VbglR3ClipboardRootListRead()
    120 
    12171        rc = VERR_NO_DATA;
    12272    }
     
    194144};
    195145
    196 /**
    197  * Tell the host that new clipboard formats are available.
    198  *
    199  * @param   pCtx            Our context information.
    200  * @param   fFormats        The formats to report.
    201  */
     146/** @copydoc ShClX11ReportFormatsCallback */
    202147DECLCALLBACK(void) ShClX11ReportFormatsCallback(PSHCLCONTEXT pCtx, SHCLFORMATS fFormats)
    203148{
     
    211156}
    212157
    213 /**
    214  * This is called by the backend to tell us that a request for data from
    215  * X11 has completed.
    216  *
    217  * @param  pCtx                 Our context information.
    218  * @param  rcCompletion         The completion status of the request.
    219  * @param  pReq                 The request structure that we passed in when we started
    220  *                              the request.  We RTMemFree() this in this function.
    221  * @param  pv                   The clipboard data returned from X11 if the request succeeded (see @a rc).
    222  * @param  cb                   The size of the data in @a pv.
    223  */
     158/** @copydoc ShClX11RequestFromX11CompleteCallback */
    224159DECLCALLBACK(void) ShClX11RequestFromX11CompleteCallback(PSHCLCONTEXT pCtx,
    225160                                                         int rcCompletion, CLIPREADCBREQ *pReq, void *pv, uint32_t cb)
     
    397332static DECLCALLBACK(int) vbclShClInit(void)
    398333{
    399     int rc;
    400 
    401 #ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
    402     /* Install callbacks. */
    403     RT_ZERO(g_Ctx.CmdCtx.Transfers.Callbacks);
    404 
    405     g_Ctx.CmdCtx.Transfers.Callbacks.pvUser = &g_Ctx; /* Assign context as user-provided callback data. */
    406     g_Ctx.CmdCtx.Transfers.Callbacks.cbUser = sizeof(SHCLCONTEXT);
    407 
    408     g_Ctx.CmdCtx.Transfers.Callbacks.pfnTransferInitialize = vbclShClOnTransferInitCallback;
    409     g_Ctx.CmdCtx.Transfers.Callbacks.pfnTransferStart      = vbclShClOnTransferStartCallback;
    410     g_Ctx.CmdCtx.Transfers.Callbacks.pfnTransferComplete   = vbclShClOnTransferCompleteCallback;
    411     g_Ctx.CmdCtx.Transfers.Callbacks.pfnTransferError      = vbclShClOnTransferErrorCallback;
    412 
    413     rc = ShClTransferCtxInit(&g_Ctx.TransferCtx);
    414 #else
    415     rc = VINF_SUCCESS;
    416 #endif
     334    int rc = ShClTransferCtxInit(&g_Ctx.TransferCtx);
    417335
    418336    LogFlowFuncLeaveRC(rc);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette