NED File src/tier2/p2pns/P2pns.ned

Name Type Description
P2pns simple module

The main module of the P2PNS implementation

P2pnsCache simple module

The name cache module of the P2PNS implementation

P2pnsModules compound module

Implementation of "P2PNS: A distributed name service for P2PSIP"

Source code:

//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//

package oversim.tier2.p2pns;

import oversim.common.BaseApp;
import oversim.common.ITier;


//
// The main module of the P2PNS implementation
//
// @author Ingmar Baumgart
//
simple P2pns extends BaseApp
{
    parameters:
        @class(P2pns);
        bool twoStageResolution; // enable two stage name resolution (KBR/DHT)
        double keepaliveInterval @unit(s); // interval between two keeaplive pings for active connections
        double idCacheLifetime @unit(s); // idle connections in the idCache get deleted after this time
        string registerName; // register the P2PNS id under this name 
}

//
// The name cache module of the P2PNS implementation
//
// @author Ingmar Baumgart
//
simple P2pnsCache
{
    parameters:
        @display("i=block/table");
}

//
// Implementation of "P2PNS: A distributed name service for P2PSIP"
//
// @author Ingmar Baumgart
//
module P2pnsModules like ITier
{
    parameters:
        @display("i=block/segm");
    gates:
        input udpIn;    // gate from the UDP layer
        input from_lowerTier;    // gate from the lower tier
        input from_upperTier;    // gate from the upper tier
        input tcpIn;             // gate from the TCP layer
        output tcpOut;           // gate to the TCP layer
        output udpOut;    // gate to the UDP layer
        output to_lowerTier;    // gate to the lower tier
        output to_upperTier;    // gate to the upper tier

    submodules:
        p2pns: P2pns {
            @display("p=137,42");
        }
        p2pnsCache: P2pnsCache {
            @display("p=53,42");
        }
    connections allowunconnected:
        from_lowerTier --> p2pns.from_lowerTier;
        to_lowerTier <-- p2pns.to_lowerTier;
        from_upperTier --> p2pns.from_upperTier;
        to_upperTier <-- p2pns.to_upperTier;

}