MtpDatabase.h revision d815f79766984fce499e147ecbacc01914683f74
156118b5b385adad0ff301f67be2cf601432d94baMike Lockwood/*
256118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * Copyright (C) 2010 The Android Open Source Project
356118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *
456118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License");
556118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * you may not use this file except in compliance with the License.
656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * You may obtain a copy of the License at
756118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *
856118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *      http://www.apache.org/licenses/LICENSE-2.0
956118b5b385adad0ff301f67be2cf601432d94baMike Lockwood *
1056118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * Unless required by applicable law or agreed to in writing, software
1156118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS,
1256118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1356118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * See the License for the specific language governing permissions and
1456118b5b385adad0ff301f67be2cf601432d94baMike Lockwood * limitations under the License.
1556118b5b385adad0ff301f67be2cf601432d94baMike Lockwood */
1656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
1756118b5b385adad0ff301f67be2cf601432d94baMike Lockwood#ifndef _MTP_DATABASE_H
1856118b5b385adad0ff301f67be2cf601432d94baMike Lockwood#define _MTP_DATABASE_H
1956118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
205bae7f615b6375820f61b28f6792cb2d01aab54bMike Lockwood#include "MtpTypes.h"
2156118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
228d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwoodnamespace android {
238d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood
2456118b5b385adad0ff301f67be2cf601432d94baMike Lockwoodclass MtpDataPacket;
2556118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
268dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwoodclass MtpDatabase {
2756118b5b385adad0ff301f67be2cf601432d94baMike Lockwoodpublic:
282d6c9e9c4e5f261b252962bf8ce04c50000a8e2cMike Lockwood    virtual ~MtpDatabase() {}
298dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood
30d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // called from SendObjectInfo to reserve a database entry for the incoming file
31d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    virtual MtpObjectHandle         beginSendObject(const char* path,
328dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpObjectFormat format,
338dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpObjectHandle parent,
348dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpStorageID storage,
358dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            uint64_t size,
368dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            time_t modified) = 0;
378dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood
38d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // called to report success or failure of the SendObject file transfer
39d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // success should signal a notification of the new object's creation,
40d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    // failure should remove the database entry created in beginSendObject
41d815f79766984fce499e147ecbacc01914683f74Mike Lockwood    virtual void                    endSendObject(const char* path,
42d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectHandle handle,
43d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectFormat format,
44d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            bool succeeded) = 0;
45d815f79766984fce499e147ecbacc01914683f74Mike Lockwood
468dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual MtpObjectHandleList*    getObjectList(MtpStorageID storageID,
47d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectFormat format,
48d815f79766984fce499e147ecbacc01914683f74Mike Lockwood                                            MtpObjectHandle parent) = 0;
4956118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
508dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual MtpResponseCode         getObjectProperty(MtpObjectHandle handle,
518dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpObjectProperty property,
528dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpDataPacket& packet) = 0;
5356118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
548dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual MtpResponseCode         getObjectInfo(MtpObjectHandle handle,
558dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpDataPacket& packet) = 0;
5656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
578dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual bool                    getObjectFilePath(MtpObjectHandle handle,
588dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            MtpString& filePath,
598dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood                                            int64_t& fileLength) = 0;
608dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual bool                    deleteFile(MtpObjectHandle handle) = 0;
61d0782678df0b23b06c8687372b58994ed252a61aMike Lockwood
628dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual void                    beginTransaction() = 0;
638dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual void                    commitTransaction() = 0;
648dd2a39bae441143ebbb65237db63f65fdc1c645Mike Lockwood    virtual void                    rollbackTransaction() = 0;
6556118b5b385adad0ff301f67be2cf601432d94baMike Lockwood};
6656118b5b385adad0ff301f67be2cf601432d94baMike Lockwood
678d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood}; // namespace android
688d3257a7dc10e1b3fda03e00f40d1b65d699ff23Mike Lockwood
6956118b5b385adad0ff301f67be2cf601432d94baMike Lockwood#endif // _MTP_DATABASE_H
70