xref: /haiku/src/servers/print/Transport.h (revision 68ea01249e1e2088933cb12f9c28d4e5c5d1c9ef)
1 /*
2  * Copyright 2008, Haiku. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Ithamar R. Adema
7  */
8 #ifndef TRANSPORT_H
9 #define TRANSPORT_H
10 
11 class Transport;
12 
13 #include <FindDirectory.h>
14 #include <Handler.h>
15 #include <String.h>
16 #include <Path.h>
17 
18 #include <ObjectList.h>
19 
20 class Transport : public BHandler
21 {
22 	typedef BHandler Inherited;
23 public:
24 	Transport(const BPath& path);
25 	~Transport();
26 
27 	BString Name() const { return fPath.Leaf(); }
28 
29 	status_t ListAvailablePorts(BMessage* msg);
30 
31 	static status_t Scan(directory_which which);
32 
33 	static Transport* Find(const BString& name);
34 	static void Remove(Transport* transport);
35 	static Transport* At(int32 idx);
36 	static int32 CountTransports();
37 
38 	void MessageReceived(BMessage* msg);
39 
40 		// Scripting support, see Printer.Scripting.cpp
41 	status_t GetSupportedSuites(BMessage* msg);
42 	void HandleScriptingCommand(BMessage* msg);
43 	BHandler* ResolveSpecifier(BMessage* msg, int32 index, BMessage* spec,
44 								int32 form, const char* prop);
45 
46 private:
47 	BPath fPath;
48 	long fImageID;
49 	int fFeatures;
50 
51 	static BObjectList<Transport> sTransports;
52 };
53 
54 #endif
55