haiku/src/servers/net/PPPServer.cpp

82 lines
1.4 KiB
C++
Raw Normal View History

/*
* Copyright 2004-2005, Waldemar Kornewald <Waldemar.Kornewald@web.de>
* Distributed under the terms of the MIT License.
*/
#include "PPPServer.h"
#include <Application.h>
PPPServer::PPPServer()
: BHandler("PPPServer"),
fListener(this)
{
be_app->AddHandler(this);
fListener.WatchManager();
InitInterfaces();
}
PPPServer::~PPPServer()
{
UninitInterfaces();
fListener.StopWatchingManager();
be_app->RemoveHandler(this);
}
void
PPPServer::MessageReceived(BMessage *message)
{
switch(message->what) {
case PPP_REPORT_MESSAGE:
HandleReportMessage(message);
break;
default:
BHandler::MessageReceived(message);
}
}
void
PPPServer::InitInterfaces()
{
// TODO: create one ConnectionRequestWindow per interface
}
void
PPPServer::UninitInterfaces()
{
// TODO: delete all ConnectionRequestWindows
}
void
PPPServer::HandleReportMessage(BMessage *message)
{
ppp_interface_id id;
if(message->FindInt32("interface", reinterpret_cast<int32*>(&id)) != B_OK)
return;
int32 type, code;
message->FindInt32("type", &type);
message->FindInt32("code", &code);
if(type == PPP_MANAGER_REPORT && code == PPP_REPORT_INTERFACE_CREATED)
CreateConnectionRequestWindow(id);
}
void
PPPServer::CreateConnectionRequestWindow(ppp_interface_id id)
{
// TODO: create window, register window as report receiver for the interface
// XXX: if a window for that ID exists then only register it as report receiver
}