kioslave
metainfo.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <kdatastream.h>
00022 #include <kurl.h>
00023 #include <kapplication.h>
00024 #include <kmimetype.h>
00025 #include <kdebug.h>
00026 #include <kfilemetainfo.h>
00027 #include <klocale.h>
00028 #include <stdlib.h>
00029
00030 #include "metainfo.h"
00031
00032
00033
00034
00035
00036 using namespace KIO;
00037
00038 extern "C"
00039 {
00040 KDE_EXPORT int kdemain(int argc, char **argv);
00041 }
00042
00043 int kdemain(int argc, char **argv)
00044 {
00045 KApplication app(argc, argv, "kio_metainfo", false, true);
00046
00047 if (argc != 4)
00048 {
00049 kdError() << "Usage: kio_metainfo protocol domain-socket1 domain-socket2" << endl;
00050 exit(-1);
00051 }
00052
00053 MetaInfoProtocol slave(argv[2], argv[3]);
00054 slave.dispatchLoop();
00055
00056 return 0;
00057 }
00058
00059 MetaInfoProtocol::MetaInfoProtocol(const QCString &pool, const QCString &app)
00060 : SlaveBase("metainfo", pool, app)
00061 {
00062 }
00063
00064 MetaInfoProtocol::~MetaInfoProtocol()
00065 {
00066 }
00067
00068 void MetaInfoProtocol::get(const KURL &url)
00069 {
00070 QString mimeType = metaData("mimeType");
00071 KFileMetaInfo info(url.path(), mimeType);
00072
00073 QByteArray arr;
00074 QDataStream stream(arr, IO_WriteOnly);
00075
00076 stream << info;
00077
00078 data(arr);
00079 finished();
00080 }
00081
00082 void MetaInfoProtocol::put(const KURL& url, int, bool, bool)
00083 {
00084 QString mimeType = metaData("mimeType");
00085 KFileMetaInfo info;
00086
00087 QByteArray arr;
00088 readData(arr);
00089 QDataStream stream(arr, IO_ReadOnly);
00090
00091 stream >> info;
00092
00093 if (info.isValid())
00094 {
00095 info.applyChanges();
00096 }
00097 else
00098 {
00099 error(ERR_NO_CONTENT, i18n("No metainfo for %1").arg(url.path()));
00100 return;
00101 }
00102 finished();
00103 }