Comment #6 on issue 5 by [email protected]: Negotiation of MAP protocol version
http://code.google.com/p/jss7/issues/detail?id=5

Below is my idea how MAP negotiation can be implemented.
Some of data should be preconfigured, some will be updated when
application lifecycle.


import java.util.ArrayList;
import java.util.HashMap;

public class NegotiationDataProvider {
        public class ACNData {
                private int ACName;
                private int SupportedVersion;
        }

        public class ACNDestination {
                private int id;
                private String template;
private HashMap<Integer, ACNData> data = new HashMap<Integer, ACNData>();

                public ACNData getSupportedACN(int acn) {
                        return null;
                        // .....................
                }

                public void updateSupportedACN(int acn, int version) {
                        // .....................
                }
        }

private ArrayList<ACNDestination> destList = new ArrayList<ACNDestination>();

        // configuring:
        public void addDestination(int id, String template) {
                // .....................
        }

        public void removeDestination(int id) {
                // .....................
        }

        public ArrayList<ACNDestination> getDestinationList() {
                return null;
                // .....................
        }

        public ACNDestination findACNDestination(String address) {
                return null;
                // .....................
        }

        // How it can work:
        // Firstly a used should configure a list of ACNDestination
(generally they are templates).
        // "template" is a global title address or a part of this address
(for example "1234*" or "111??")
        // The list of ACNDestination (templeates) can be configured in by a
management interface (for example CLI)
        // (it is not implemented firstly)
        // When first configuring supported AC names and versions can be
configured also via a management interface
        //
        // Then a MAP user application searches a ACNDestination by invoking
findACNDestination()
        // with SCCP GT address as a parameter. If ACNDestination is found
and AC version is predefined
        // for needed AC name MAP user application just use it for Mobicents
originated messages.
        // If ACNDestination is found but AC version is not predefined, MAP
user application
        // tries to negotiate AC version (starting with max possible) and
determine in this way the max AC version
        // that a peer supports. Then the MAP user application update a
negotiation table by ACNDestination.updateSupportedACN()
// If AC version is preconfigured but the MAP user application failed
to use this AC version it
        // makes a negotiation process and if success it will update a
negotiation table too.
        // A MAP user application can also not to update data in the
negotiation table but only use


// Another algo can be implemented for such application like HLR/VLR.
HLR and VLR can keep AC version
        // for each subscriber according to data that has been obtained by
previous MAP dialogs.
}


Reply via email to