VirtualBox

source: vbox/trunk/src/VBox/GuestHost/SharedClipboard/ClipboardProvider.cpp@ 78985

Last change on this file since 78985 was 78974, checked in by vboxsync, 6 years ago

Shared Clipboard/URI: Update.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.7 KB
Line 
1/* $Id: ClipboardProvider.cpp 78974 2019-06-04 16:51:48Z vboxsync $ */
2/** @file
3 * Shared Clipboard - Provider implementation.
4 */
5
6/*
7 * Copyright (C) 2019 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18
19/*********************************************************************************************************************************
20* Header Files *
21*********************************************************************************************************************************/
22#define LOG_GROUP LOG_GROUP_SHARED_CLIPBOARD
23#include <VBox/GuestHost/SharedClipboard-uri.h>
24
25#include <iprt/asm.h>
26#include <iprt/assert.h>
27#include <iprt/dir.h>
28#include <iprt/errcore.h>
29#include <iprt/file.h>
30#include <iprt/path.h>
31#include <iprt/string.h>
32
33
34#include <VBox/log.h>
35
36
37
38SharedClipboardProvider::SharedClipboardProvider(void)
39 : m_cRefs(0)
40{
41 LogFlowFuncEnter();
42}
43
44SharedClipboardProvider::~SharedClipboardProvider(void)
45{
46 LogFlowFuncEnter();
47 Assert(m_cRefs == 0);
48}
49
50/**
51 * Creates a Shared Clipboard provider.
52 *
53 * @returns New Shared Clipboard provider instance.
54 * @param pCtx Pointer to creation context.
55 */
56/* static */
57SharedClipboardProvider *SharedClipboardProvider::Create(PSHAREDCLIPBOARDPROVIDERCREATIONCTX pCtx)
58{
59 AssertPtrReturn(pCtx, NULL);
60
61 SharedClipboardProvider *pProvider = NULL;
62
63 switch (pCtx->enmSource)
64 {
65#ifdef VBOX_WITH_SHARED_CLIPBOARD_GUEST
66 case SHAREDCLIPBOARDPROVIDERSOURCE_VBGLR3:
67 pProvider = new SharedClipboardProviderVbglR3(pCtx->u.VBGLR3.uClientID);
68 break;
69#endif
70
71#ifdef VBOX_WITH_SHARED_CLIPBOARD_HOST
72 case SHAREDCLIPBOARDPROVIDERSOURCE_HOSTSERVICE:
73 pProvider = new SharedClipboardProvider();
74 break;
75#endif
76 default:
77 AssertFailed();
78 break;
79 }
80
81 return pProvider;
82}
83
84/**
85 * Adds a reference to a Shared Clipboard provider.
86 *
87 * @returns New reference count.
88 */
89uint32_t SharedClipboardProvider::AddRef(void)
90{
91 LogFlowFuncEnter();
92 return ASMAtomicIncU32(&m_cRefs);
93}
94
95/**
96 * Removes a reference from a Shared Clipboard cache.
97 *
98 * @returns New reference count.
99 */
100uint32_t SharedClipboardProvider::Release(void)
101{
102 LogFlowFuncEnter();
103 Assert(m_cRefs);
104 return ASMAtomicDecU32(&m_cRefs);
105}
106
107int SharedClipboardProvider::ReadMetaData(uint32_t fFlags /* = 0 */)
108{
109 RT_NOREF(fFlags);
110 return VERR_NOT_IMPLEMENTED;
111}
112
113int SharedClipboardProvider::WriteMetaData(const void *pvBuf, size_t cbBuf, size_t *pcbWritten, uint32_t fFlags /* = 0 */)
114{
115 RT_NOREF(pvBuf, cbBuf, pcbWritten, fFlags);
116 return VERR_NOT_IMPLEMENTED;
117}
118
119/*
120 * Stubs.
121 */
122
123int SharedClipboardProvider::ReadDirectory(PVBOXCLIPBOARDDIRDATA pDirData)
124{
125 RT_NOREF(pDirData);
126
127 LogFlowFuncEnter();
128
129 int rc = VERR_NOT_IMPLEMENTED;
130
131 LogFlowFuncLeaveRC(rc);
132 return rc;
133}
134
135int SharedClipboardProvider::ReadDirectoryObj(SharedClipboardURIObject &Obj)
136{
137 RT_NOREF(Obj);
138
139 LogFlowFuncEnter();
140
141 int rc = VERR_NOT_IMPLEMENTED;
142
143 LogFlowFuncLeaveRC(rc);
144 return rc;
145}
146
147int SharedClipboardProvider::WriteDirectory(const PVBOXCLIPBOARDDIRDATA pDirData)
148{
149 RT_NOREF(pDirData);
150
151 LogFlowFuncEnter();
152
153 int rc = VERR_NOT_IMPLEMENTED;
154
155 LogFlowFuncLeaveRC(rc);
156 return rc;
157}
158
159int SharedClipboardProvider::WriteDirectoryObj(const SharedClipboardURIObject &Obj)
160{
161 RT_NOREF(Obj);
162
163 LogFlowFuncEnter();
164
165 int rc = VERR_NOT_IMPLEMENTED;
166
167 LogFlowFuncLeaveRC(rc);
168 return rc;
169}
170
171int SharedClipboardProvider::ReadFileHdr(PVBOXCLIPBOARDFILEHDR pFileHdr)
172{
173 RT_NOREF(pFileHdr);
174
175 LogFlowFuncEnter();
176
177 int rc = VERR_NOT_IMPLEMENTED;
178
179 LogFlowFuncLeaveRC(rc);
180 return rc;
181}
182
183int SharedClipboardProvider::ReadFileHdrObj(SharedClipboardURIObject &Obj)
184{
185 RT_NOREF(Obj);
186
187 LogFlowFuncEnter();
188
189 int rc = VERR_NOT_IMPLEMENTED;
190
191 LogFlowFuncLeaveRC(rc);
192 return rc;
193}
194
195int SharedClipboardProvider::WriteFileHdr(const PVBOXCLIPBOARDFILEHDR pFileHdr)
196{
197 RT_NOREF(pFileHdr);
198
199 LogFlowFuncEnter();
200
201 int rc = VERR_NOT_IMPLEMENTED;
202
203 LogFlowFuncLeaveRC(rc);
204 return rc;
205}
206
207int SharedClipboardProvider::WriteFileHdrObj(const SharedClipboardURIObject &Obj)
208{
209 RT_NOREF(Obj);
210
211 LogFlowFuncEnter();
212
213 int rc = VERR_NOT_IMPLEMENTED;
214
215 LogFlowFuncLeaveRC(rc);
216 return rc;
217}
218
219int SharedClipboardProvider::ReadFileDataObj(SharedClipboardURIObject &Obj, uint32_t *pcbRead)
220{
221 RT_NOREF(Obj, pcbRead);
222
223 LogFlowFuncEnter();
224
225 int rc = VERR_NOT_IMPLEMENTED;
226
227 LogFlowFuncLeaveRC(rc);
228 return rc;
229}
230
231int SharedClipboardProvider::ReadFileData(PVBOXCLIPBOARDFILEDATA pFileData, uint32_t *pcbRead)
232{
233 RT_NOREF(pFileData, pcbRead);
234
235 LogFlowFuncEnter();
236
237 int rc = VERR_NOT_IMPLEMENTED;
238
239 LogFlowFuncLeaveRC(rc);
240 return rc;
241}
242
243int SharedClipboardProvider::WriteFileDataObj(const SharedClipboardURIObject &Obj, uint32_t *pcbWritten)
244{
245 RT_NOREF(Obj, pcbWritten);
246
247 LogFlowFuncEnter();
248
249 int rc = VERR_NOT_IMPLEMENTED;
250
251 LogFlowFuncLeaveRC(rc);
252 return rc;
253}
254
255int SharedClipboardProvider::WriteFileData(const PVBOXCLIPBOARDFILEDATA pFileData, uint32_t *pcbWritten)
256{
257 RT_NOREF(pFileData, pcbWritten);
258
259 LogFlowFuncEnter();
260
261 int rc = VERR_NOT_IMPLEMENTED;
262
263 LogFlowFuncLeaveRC(rc);
264 return rc;
265}
266
267void SharedClipboardProvider::Reset(void)
268{
269}
270
Note: See TracBrowser for help on using the repository browser.

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