VirtualBox

Changeset 87058 in vbox for trunk


Ignore:
Timestamp:
Dec 9, 2020 9:42:13 AM (4 years ago)
Author:
vboxsync
Message:

Shared Clipboard/Transfers: Initial commit for the transfer HTTP server. Work in progress. bugref:9874

Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/GuestHost/SharedClipboard-transfers.h

    r86949 r87058  
    3636#include <iprt/critsect.h>
    3737#include <iprt/fs.h>
     38#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP
     39# include <iprt/http-server.h>
     40#endif
    3841#include <iprt/list.h>
    3942
     
    762765} SHCLTRANSFERREPORT, *PSHCLTRANSFERREPORT;
    763766
     767#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP
     768typedef struct _SHCLHTTPSERVER
     769{
     770    /** Critical section for serializing access. */
     771    RTCRITSECT          CritSect;
     772    /** Handle of the HTTP server instance. */
     773    RTHTTPSERVER        hHTTPServer;
     774    /** Port number the HTTP server is running on. 0 if not running. */
     775    uint16_t            uPort;
     776    /** List of registered HTTP transfers. */
     777    RTLISTANCHOR        lstTransfers;
     778    /** Number of registered HTTP transfers. */
     779    uint32_t            cTransfers;
     780    /** Cached response data. */
     781    RTHTTPSERVERRESP    Resp;
     782} SHCLHTTPSERVER;
     783typedef SHCLHTTPSERVER *PSHCLHTTPSERVER;
     784#endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP */
     785
    764786/**
    765787 * Structure for keeping Shared Clipboard transfer context around.
     
    779801    /** Number of total transfers (in list). */
    780802    uint16_t                    cTransfers;
     803#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP
     804    /** HTTP server instance for this transfer context. */
     805    SHCLHTTPSERVER              HttpServer;
     806#endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP */
    781807} SHCLTRANSFERCTX, *PSHCLTRANSFERCTX;
    782808
     
    883909int ShClTransferCtxTransferUnregister(PSHCLTRANSFERCTX pTransferCtx, SHCLTRANSFERID idTransfer);
    884910
     911#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS_HTTP
     912int ShClTransferHttpServerCreate(PSHCLHTTPSERVER pSrv, PSHCLTRANSFERCTX pCtx);
     913int ShClTransferHttpServerCreateEx(PSHCLHTTPSERVER pSrv, uint16_t uPort);
     914int ShClTransferHttpServerDestroy(PSHCLHTTPSERVER pSrv);
     915int ShClTransferHttpServerRegisterTransfer(PSHCLHTTPSERVER pSrv, PSHCLTRANSFER pTransfer);
     916int ShClTransferHttpServerUnregisterTransfer(PSHCLHTTPSERVER pSrv, PSHCLTRANSFER pTransfer);
     917bool ShClTransferHttpServerHasTransfer(PSHCLHTTPSERVER pSrv, SHCLTRANSFERID idTransfer);
     918uint16_t ShClTransferHttpServerGetPort(PSHCLHTTPSERVER pSrv);
     919uint32_t ShClTransferHttpServerGetTransferCount(PSHCLHTTPSERVER pSrv);
     920char *ShClTransferHttpServerGetAddressA(PSHCLHTTPSERVER pSrv);
     921char *ShClTransferHttpServerGetUrlA(PSHCLHTTPSERVER pSrv, SHCLTRANSFERID idTransfer);
     922#endif
     923
    885924void ShClFsObjFromIPRT(PSHCLFSOBJINFO pDst, PCRTFSOBJINFO pSrc);
    886925
  • trunk/src/VBox/GuestHost/SharedClipboard/clipboard-x11.cpp

    r86959 r87058  
    5959# include <iprt/cpp/list.h>
    6060# include <iprt/cpp/ministring.h>
     61# include <VBox/GuestHost/SharedClipboard-transfers.h>
    6162#endif
    6263
     
    14271428    }
    14281429    else
    1429         rc = ShClX11RequestDataForX11Callback(pCtx->pFrontend, Format,
    1430                                               &pv, &cb);
     1430    {
     1431        rc = ShClX11RequestDataForX11Callback(pCtx->pFrontend, Format, &pv, &cb);
     1432    }
    14311433
    14321434    if (RT_SUCCESS(rc))
     
    20502052                if (RT_SUCCESS(RTStrValidateEncodingEx((char *)pvSrc, cbSrc, 0)))
    20512053                {
    2052                     /* URI lists on X are string separated with "\r\n". */
     2054                    /* URI lists on X are strings separated with "\r\n". */
    20532055                    RTCList<RTCString> lstRootEntries = RTCString((char *)pvSrc, cbSrc).split("\r\n");
    20542056                    for (size_t i = 0; i < lstRootEntries.size(); ++i)
     
    20572059                        AssertPtrBreakStmt(pszEntry, VERR_INVALID_PARAMETER);
    20582060
    2059                         LogFlowFunc(("URI list entry '%s'\n", pszEntry));
     2061                        rc = RTStrAAppend((char **)&pvDst, "http://localhost");
     2062                        AssertRCBreakStmt(rc, VERR_NO_MEMORY);
     2063                        cbDst += (uint32_t)strlen(pszEntry);
     2064
     2065
     2066
     2067                        /** @todo BUGBUG Fix port! */
     2068                        /** @todo Add port + UUID (virtual path). */
    20602069
    20612070                        rc = RTStrAAppend((char **)&pvDst, pszEntry);
    20622071                        AssertRCBreakStmt(rc, VERR_NO_MEMORY);
    20632072                        cbDst += (uint32_t)strlen(pszEntry);
     2073
     2074                        LogFlowFunc(("URI list entry '%s'\n", (char *)pvDst));
    20642075
    20652076                        rc = RTStrAAppend((char **)&pvDst, "\r\n");
Note: See TracChangeset for help on using the changeset viewer.

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