singrdk/base/Services/NetStack/Runtime/INetModule.cs

57 lines
1.7 KiB
C#

///////////////////////////////////////////////////////////////////////////////
//
// Microsoft Research Singularity
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
/**
* Microsoft Research, Cambridge
* author: Yaron Weinsberg, Richard Black
*/
using System;
namespace NetStack
{
namespace Runtime
{
/**
* All the networking stack modules must implement
* this interface. The runtime uses this interface
* to manage the different modules.
*/
public interface INetModule
{
// get the module's name
string ModuleName { get; }
// get the modules version
ushort ModuleVersion { get; }
// an initializer for new protocols.
// the protocol receives the parameters
// from the configuration file (string based)
// NOTICE: should not rely on a specific initialization
// order, wait to StartModule invocation for inter-module
// operations!
bool Initialize(ProtocolParams parameters);
// start module activity, module specific.
// it is called by the runtime after ALL protocols
// are initialized and the host configuration is valid!
bool StartModule();
// stop module activity, module specific.
// it is called by the runtime
bool StopModule();
// destroy module, free unmanaged resources if any.
// it is called by the runtime
bool DestroyModule();
}
}
}