1/*
2 * Copyright 2004-2005, Waldemar Kornewald <wkornew@gmx.net>
3 * Distributed under the terms of the MIT License.
4 */
5
6#include "PPPServer.h"
7#include <Application.h>
8
9
10PPPServer::PPPServer()
11	: BHandler("PPPServer"),
12	fListener(this)
13{
14	be_app->AddHandler(this);
15
16	fListener.WatchManager();
17
18	InitInterfaces();
19}
20
21
22PPPServer::~PPPServer()
23{
24	UninitInterfaces();
25
26	fListener.StopWatchingManager();
27
28	be_app->RemoveHandler(this);
29}
30
31
32void
33PPPServer::MessageReceived(BMessage *message)
34{
35	switch(message->what) {
36		case PPP_REPORT_MESSAGE:
37			HandleReportMessage(message);
38		break;
39
40		default:
41			BHandler::MessageReceived(message);
42	}
43}
44
45
46void
47PPPServer::InitInterfaces()
48{
49	// TODO: create one ConnectionRequestWindow per interface
50}
51
52
53void
54PPPServer::UninitInterfaces()
55{
56	// TODO: delete all ConnectionRequestWindows
57}
58
59
60void
61PPPServer::HandleReportMessage(BMessage *message)
62{
63	ppp_interface_id id;
64	if (message->FindInt32("interface", reinterpret_cast<int32*>(&id)) != B_OK)
65		return;
66
67	int32 type, code;
68	message->FindInt32("type", &type);
69	message->FindInt32("code", &code);
70
71	if (type == PPP_MANAGER_REPORT && code == PPP_REPORT_INTERFACE_CREATED)
72		CreateConnectionRequestWindow(id);
73}
74
75
76void
77PPPServer::CreateConnectionRequestWindow(ppp_interface_id id)
78{
79	// TODO: create window, register window as report receiver for the interface
80	// XXX: if a window for that ID exists then only register it as report receiver
81}
82