1/* 2 * Copyright 2006-2013, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _MINE_MIME_SNIFFER_ADDON_MANAGER_H 6#define _MINE_MIME_SNIFFER_ADDON_MANAGER_H 7 8 9#include <List.h> 10#include <Locker.h> 11 12 13#include <mime/MimeSniffer.h> 14 15 16class BFile; 17class BMimeSnifferAddon; 18class BMimeType; 19 20 21namespace BPrivate { 22namespace Storage { 23namespace Mime { 24 25 26class MimeSnifferAddonManager : public BPrivate::Storage::Mime::MimeSniffer { 27private: 28 MimeSnifferAddonManager(); 29 ~MimeSnifferAddonManager(); 30 31public: 32 static MimeSnifferAddonManager* Default(); 33 static status_t CreateDefault(); 34 static void DeleteDefault(); 35 36 status_t AddMimeSnifferAddon(BMimeSnifferAddon* addon); 37 38 virtual size_t MinimalBufferSize(); 39 40 virtual float GuessMimeType(const char* fileName, 41 BMimeType* type); 42 virtual float GuessMimeType(BFile* file, 43 const void* buffer, int32 length, 44 BMimeType* type); 45 46private: 47 struct AddonReference; 48 49 status_t _GetAddons(AddonReference**& references, 50 int32& count); 51 void _PutAddons(AddonReference** references, 52 int32 count); 53 54 static MimeSnifferAddonManager* sManager; 55 56 BLocker fLock; 57 BList fAddons; 58 size_t fMinimalBufferSize; 59}; 60 61} // namespace Mime 62} // namespace Storage 63} // namespace BPrivate 64 65 66#endif // _MINE_MIME_SNIFFER_ADDON_MANAGER_H 67 68