1/*
2 * Copyright 2010 Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Michael Pfeiffer
7 */
8#ifndef PRINT_ADD_ON_SERVER_H
9#define PRINT_ADD_ON_SERVER_H
10
11
12#include <Directory.h>
13#include <Entry.h>
14#include <Message.h>
15#include <Messenger.h>
16#include <Path.h>
17#include <String.h>
18#include <SupportDefs.h>
19
20
21class PrintAddOnServer
22{
23public:
24						PrintAddOnServer(const char* driver);
25	virtual				~PrintAddOnServer();
26
27			status_t	AddPrinter(const char* spoolFolderName);
28			status_t	ConfigPage(BDirectory* spoolFolder,
29							BMessage* settings);
30			status_t	ConfigJob(BDirectory* spoolFolder,
31							BMessage* settings);
32			status_t	DefaultSettings(BDirectory* spoolFolder,
33							BMessage* settings);
34			status_t	TakeJob(const char* spoolFile,
35							BDirectory* spoolFolder);
36
37	static	status_t	FindPathToDriver(const char* driver, BPath* path);
38
39private:
40			const char*	Driver() const;
41
42			status_t	Launch(BMessenger& messenger);
43			bool		IsLaunched();
44			void		Quit();
45
46			void		AddDirectory(BMessage& message, const char* name,
47							BDirectory* directory);
48			void		AddEntryRef(BMessage& message, const char* name,
49							const entry_ref* entryRef);
50			status_t	SendRequest(BMessage& request, BMessage& reply);
51			status_t	GetResult(BMessage& reply);
52			status_t	GetResultAndUpdateSettings(BMessage& reply,
53							BMessage* settings);
54
55	BString		fDriver;
56	status_t	fLaunchStatus;
57	BMessenger	fMessenger;
58};
59
60
61
62#endif
63