Changeset 80845 in vbox for trunk/include/VBox/GuestHost/SharedClipboard-uri.h
- Timestamp:
- Sep 17, 2019 9:05:21 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/GuestHost/SharedClipboard-uri.h
r80663 r80845 43 43 #include <VBox/GuestHost/SharedClipboard.h> 44 44 45 46 /** @name Shared Clipboard transfer definitions. 47 * @{ 48 */ 49 50 /** No status set. */ 51 #define SHCLURITRANSFERSTATUS_NONE 0 52 /** The transfer has been announced but is not running yet. */ 53 #define SHCLURITRANSFERSTATUS_READY 1 54 /** The transfer is active and running. */ 55 #define SHCLURITRANSFERSTATUS_STARTED 2 56 /** The transfer has been stopped. */ 57 #define SHCLURITRANSFERSTATUS_STOPPED 3 58 /** The transfer has been canceled. */ 59 #define SHCLURITRANSFERSTATUS_CANCELED 4 60 /** The transfer has been killed. */ 61 #define SHCLURITRANSFERSTATUS_KILLED 5 62 /** The transfer ran into an unrecoverable error. */ 63 #define SHCLURITRANSFERSTATUS_ERROR 6 64 65 /** Defines a transfer status. */ 66 typedef uint32_t SHCLURITRANSFERSTATUS; 67 68 /** @} */ 69 45 70 /** @name Shared Clipboard handles. 46 71 * @{ … … 357 382 union 358 383 { 384 struct 385 { 386 SHCLURITRANSFERSTATUS uStatus; 387 } TransferStatus; 359 388 struct 360 389 { … … 657 686 /** The usual 32-bit hack. */ 658 687 SHCLURITRANSFERDIR_32BIT_HACK = 0x7fffffff 659 } SHCLURITRANSFERDIR ;688 } SHCLURITRANSFERDIR, *PSHCLURITRANSFERDIR; 660 689 661 690 struct _SHCLURITRANSFER; … … 673 702 typedef struct _SHCLURITRANSFEROBJSTATE 674 703 { 675 uint64_t cbProcessed; 704 /** How many bytes were processed (read / write) so far. */ 705 uint64_t cbProcessed; 676 706 } SHCLURITRANSFEROBJSTATE, *PSHCLURITRANSFEROBJSTATE; 677 707 … … 679 709 { 680 710 SHCLOBJHANDLE uHandle; 681 char 711 char *pszPathAbs; 682 712 SHCLFSOBJINFO objInfo; 683 713 SHCLSOURCE enmSource; … … 685 715 } SHCLURITRANSFEROBJ, *PSHCLURITRANSFEROBJ; 686 716 687 /** No status set. */ 688 #define SHCLURITRANSFERSTATUS_NONE 0 689 /** The transfer has been announced but is not running yet. */ 690 #define SHCLURITRANSFERSTATUS_READY 1 691 /** The transfer is active and running. */ 692 #define SHCLURITRANSFERSTATUS_RUNNING 2 693 /** The transfer has been completed. */ 694 #define SHCLURITRANSFERSTATUS_COMPLETED 3 695 /** The transfer has been canceled. */ 696 #define SHCLURITRANSFERSTATUS_CANCELED 4 697 /** The transfer ran into an unrecoverable error. */ 698 #define SHCLURITRANSFERSTATUS_ERROR 5 699 700 /** Defines a transfer status. */ 701 typedef uint32_t SHCLURITRANSFERSTATUS; 717 /** Defines a transfer ID. */ 718 typedef uint16_t SHCLURITRANSFERID; 702 719 703 720 /** … … 725 742 { 726 743 /** The list node. */ 727 RTLISTNODE 744 RTLISTNODE Node; 728 745 /** The list's handle. */ 729 SHCLLISTHANDLE 746 SHCLLISTHANDLE hList; 730 747 /** Type of list handle. */ 731 SHCLURIOBJTYPE 748 SHCLURIOBJTYPE enmType; 732 749 /** Absolute local path of the list object. */ 733 char 750 char *pszPathLocalAbs; 734 751 union 735 752 { … … 753 770 { 754 771 /** The list node. */ 755 RTLISTNODE 772 RTLISTNODE Node; 756 773 /** The object's handle. */ 757 774 SHCLOBJHANDLE hObj; … … 759 776 SHCLURIOBJTYPE enmType; 760 777 /** Absolute local path of the object. */ 761 char 778 char *pszPathLocalAbs; 762 779 union 763 780 { … … 792 809 { 793 810 /** The transfer's (local) ID. */ 794 uint16_tuID;811 SHCLURITRANSFERID uID; 795 812 /** The transfer's current status. */ 796 SHCLURITRANSFERSTATUS 813 SHCLURITRANSFERSTATUS enmStatus; 797 814 /** The transfer's direction. */ 798 SHCLURITRANSFERDIR 815 SHCLURITRANSFERDIR enmDir; 799 816 /** The transfer's source. */ 800 SHCLSOURCE 817 SHCLSOURCE enmSource; 801 818 } SHCLURITRANSFERSTATE, *PSHCLURITRANSFERSTATE; 802 819 … … 879 896 SHCLPROVIDERINTERFACE Interface; 880 897 /** Provider callback data. */ 881 void 898 void *pvUser; 882 899 } SHCLPROVIDERCREATIONCTX, *PSHCLPROVIDERCREATIONCTX; 883 900 … … 893 910 PSHCLURITRANSFER pTransfer; 894 911 /** Saved user pointer. */ 895 void 912 void *pvUser; 896 913 } SHCLURITRANSFERCALLBACKDATA, *PSHCLURITRANSFERCALLBACKDATA; 897 914 … … 963 980 { 964 981 /** The node member for using this struct in a RTList. */ 965 RTLISTNODE 982 RTLISTNODE Node; 966 983 /** Critical section for serializing access. */ 967 RTCRITSECT 984 RTCRITSECT CritSect; 968 985 /** The transfer's state (for SSM, later). */ 969 986 SHCLURITRANSFERSTATE State; 970 987 /** Timeout (in ms) for waiting of events. Default is 30s. */ 971 RTMSINTERVAL 988 RTMSINTERVAL uTimeoutMs; 972 989 /** Absolute path to root entries. */ 973 char 990 char *pszPathRootAbs; 974 991 /** Maximum data chunk size (in bytes) to transfer. Default is 64K. */ 975 uint32_t 992 uint32_t cbMaxChunkSize; 976 993 /** The transfer's own event source. */ 977 994 SHCLEVENTSOURCE Events; … … 979 996 SHCLLISTHANDLE uListHandleNext; 980 997 /** List of all list handles elated to this transfer. */ 981 RTLISTANCHOR 998 RTLISTANCHOR lstList; 982 999 /** Number of root entries in list. */ 983 uint64_t 1000 uint64_t cRoots; 984 1001 /** List of root entries of this transfer. */ 985 RTLISTANCHOR 1002 RTLISTANCHOR lstRoots; 986 1003 /** Next upcoming object handle. */ 987 1004 SHCLOBJHANDLE uObjHandleNext; 988 1005 /** Map of all objects handles related to this transfer. */ 989 RTLISTANCHOR 1006 RTLISTANCHOR lstObj; 990 1007 /** The transfer's own (local) area, if any (can be NULL if not needed). 991 1008 * The area itself has a clipboard area ID assigned. 992 1009 * On the host this area ID gets shared (maintained / locked) across all VMs via VBoxSVC. */ 993 SharedClipboardArea *pArea; 1010 SharedClipboardArea *pArea; 1011 /** The transfer's own provider context. */ 994 1012 SHCLPROVIDERCTX ProviderCtx; 995 1013 /** The transfer's provider interface. */ … … 998 1016 SHCLURITRANSFERCALLBACKS Callbacks; 999 1017 /** Opaque pointer to implementation-specific parameters. */ 1000 void 1018 void *pvUser; 1001 1019 /** Size (in bytes) of implementation-specific parameters. */ 1002 size_t 1020 size_t cbUser; 1003 1021 /** Contains thread-related attributes. */ 1004 1022 SHCLURITRANSFERTHREAD Thread; 1005 1023 } SHCLURITRANSFER, *PSHCLURITRANSFER; 1024 1025 /** 1026 * Structure for keeping an URI transfer status report. 1027 */ 1028 typedef struct _SHCLURITRANSFERREPORT 1029 { 1030 /** Actual status to report. */ 1031 SHCLURITRANSFERSTATUS uStatus; 1032 /** Result code (rc) to report; might be unused / invalid, based on enmStatus. */ 1033 int rc; 1034 /** Reporting flags. Currently unused and must be 0. */ 1035 uint32_t fFlags; 1036 } SHCLURITRANSFERREPORT, *PSHCLURITRANSFERREPORT; 1006 1037 1007 1038 /** … … 1014 1045 /** List of transfers. */ 1015 1046 RTLISTANCHOR List; 1016 /** Number of running (concurrent) transfers.1017 * At the moment we only support only one transfer per client at a time. */1018 uint32_t cRunning;1019 /** Maximum Number of running (concurrent) transfers.1020 * At the moment we only support only one transfer per client at a time. */1021 uint 32_t cMaxRunning;1047 /** Transfer ID allocation bitmap; clear bits are free, set bits are busy. */ 1048 uint64_t bmTransferIds[VBOX_SHARED_CLIPBOARD_MAX_TRANSFERS / sizeof(uint64_t) / 8]; 1049 /** Number of running (concurrent) transfers. */ 1050 uint16_t cRunning; 1051 /** Maximum Number of running (concurrent) transfers. */ 1052 uint16_t cMaxRunning; 1022 1053 /** Number of total transfers (in list). */ 1023 uint 32_t cTransfers;1054 uint16_t cTransfers; 1024 1055 } SHCLURICTX, *PSHCLURICTX; 1025 1056 … … 1042 1073 void SharedClipboardURIObjectDataChunkFree(PSHCLOBJDATACHUNK pDataChunk); 1043 1074 1044 int SharedClipboardURITransferCreate(SHCLURITRANSFERDIR enmDir, SHCLSOURCE enmSource, 1045 PSHCLURITRANSFER *ppTransfer); 1075 int SharedClipboardURITransferCreate(PSHCLURITRANSFER *ppTransfer); 1046 1076 int SharedClipboardURITransferDestroy(PSHCLURITRANSFER pTransfer); 1047 1077 1078 int SharedClipboardURITransferInit(PSHCLURITRANSFER pTransfer, uint32_t uID, SHCLURITRANSFERDIR enmDir, SHCLSOURCE enmSource); 1048 1079 int SharedClipboardURITransferOpen(PSHCLURITRANSFER pTransfer); 1049 1080 int SharedClipboardURITransferClose(PSHCLURITRANSFER pTransfer); … … 1073 1104 int SharedClipboardURILTransferRootsAsList(PSHCLURITRANSFER pTransfer, PSHCLROOTLIST *ppRootList); 1074 1105 1106 SHCLURITRANSFERID SharedClipboardURITransferGetID(PSHCLURITRANSFER pTransfer); 1075 1107 SHCLSOURCE SharedClipboardURITransferGetSource(PSHCLURITRANSFER pTransfer); 1076 1108 SHCLURITRANSFERSTATUS SharedClipboardURITransferGetStatus(PSHCLURITRANSFER pTransfer); … … 1094 1126 void SharedClipboardURICtxTransfersCleanup(PSHCLURICTX pURI); 1095 1127 bool SharedClipboardURICtxTransfersMaximumReached(PSHCLURICTX pURI); 1096 int SharedClipboardURICtxTransferAdd(PSHCLURICTX pURI, PSHCLURITRANSFER pTransfer); 1097 int SharedClipboardURICtxTransferRemove(PSHCLURICTX pURI, PSHCLURITRANSFER pTransfer); 1128 int SharedClipboardURICtxTransferRegister(PSHCLURICTX pURI, PSHCLURITRANSFER pTransfer, uint32_t *pidTransfer); 1129 int SharedClipboardURICtxTransferRegisterByIndex(PSHCLURICTX pURI, PSHCLURITRANSFER pTransfer, uint32_t idTransfer); 1130 int SharedClipboardURICtxTransferUnregister(PSHCLURICTX pURI, uint32_t idTransfer); 1098 1131 1099 1132 void SharedClipboardFsObjFromIPRT(PSHCLFSOBJINFO pDst, PCRTFSOBJINFO pSrc); … … 1102 1135 bool SharedClipboardMIMENeedsCache(const char *pcszFormat, size_t cchFormatMax); 1103 1136 1137 const char *VBoxClipboardTransferStatusToStr(uint32_t uStatus); 1138 1104 1139 #endif /* !VBOX_INCLUDED_GuestHost_SharedClipboard_uri_h */ 1105 1140
Note:
See TracChangeset
for help on using the changeset viewer.