/**
        * Creates a direct connection to the given peer identifier, which, in the case of direct connect, is simply the
        * peer's hostname or IP address.
        */
        public TerkUserPrx connectToPeer(string peerIdentifier)
        {
            log("connectToPeer called");
            peerIdentifier = peerIdentifier.Replace("localhost", "127.0.0.1");

            HostAndPort hostAndPort = createHostAndPort(peerIdentifier);

            if (peerHostAndPortToProxyMap.ContainsKey(hostAndPort))
            {
                throw new DuplicateConnectionException("Already connected to peer [" + hostAndPort + "]");
            }

            log("Not connected... creating new connection");
            TerkUserPrx peerProxy;
            ObjectPrx objectPrx;

            try
            {
                objectPrx = getPeerProxy(hostAndPort, new Identity(MAIN_SERVANT_PROXY_IDENTITY_NAME, ""));
                if (objectPrx != null)
                {
                    peerProxy = TerkUserPrxHelper.uncheckedCast(objectPrx);

                    peerHostAndPortToProxyMap.Add(hostAndPort, peerProxy);

                    //start pinger
                    pinger = startPinger(new PeerPingerState(hostAndPort, objectPrx, this));
                    peerHostAndPortToPingerMap.Add(hostAndPort, pinger);
                }

                else
                {
                    throw new PeerConnectionFailedException("getPeerProxy() returned null peer proxy for peer [" + hostAndPort + "]");
                }
            }
            catch (Exception e)
            {
                throw new PeerConnectionFailedException("Failed to create connection to peer [" + hostAndPort + "]: " + e);
            }
            HostInformation hostInformation = HostInformation.extractHostInformation(objectPrx.ice_getConnection().ToString());
            string endpointKey = objectAdapterName + "." + ENDPOINT_PROPERTY_KEY;
            string endpointValue = communicator.getProperties().getProperty(PROTOCOL_PROPERTY_KEY) + " -h " + hostInformation.getLocalHost() + " -p " + hostInformation.getLocalPort();

            communicator.getProperties().setProperty(endpointKey, endpointValue);

            peerProxy.ice_getConnection().setAdapter(addObjectAdapter(getObjectAdapterName()));

            servants = this.servantFactory.createServants(this);

            // notify the peer of the connection
            notifyPeerOfConnection(peerProxy);

            return peerProxy;
        }
Beispiel #2
0
        private void selectServant(Servants servant)
        {
            switch (servant)
            {
            case Servants.Caesar:
                name = "Gaius Julius Caesar";
                break;

            case Servants.Gilles:
                name = "Gilles de Rais";
                break;

            case Servants.RobinHood:
                name = "Robin Hood";
                break;

            case Servants.Euryale:
                name = "Euryale";
                break;

            case Servants.CuChulainn:
                name = "Cu Chulainn";
                break;

            case Servants.CuPrototype:
                name = "Cu Chulainn [Prototype]";
                break;

            case Servants.Romulus:
                name = "Romulus";
                break;

            case Servants.Medusa:
                name = "Medusa";
                break;

            case Servants.Boudica:
                name = "Boudica";
                break;

            case Servants.Ushiwakamaru:
                name = "Ushiwakamaru";
                break;

            case Servants.Alexander:
                name = "Alexander";
                break;

            case Servants.Medea:
                name = "Medea";
                break;

            case Servants.Mephistopheles:
                name = "Mephistopheles";
                break;

            case Servants.JingKe:
                name = "Jing Ke";
                break;

            case Servants.LuBu:
                name = "Lu Bu Fengxian";
                break;

            case Servants.Darius:
                name = "Darius III";
                break;

            case Servants.Kiyohime:
                name = "Kiyohime";
                break;

            case Servants.David:
                name = "David";
                break;

            case Servants.Hektor:
                name = "Hektor";
                break;

            case Servants.Siegfried:
                name = "Siegfried";
                break;

            case Servants.Chevalier:
                name = "Chevalier d'Eon";
                break;

            case Servants.Emiya:
                name = "Emiya";
                break;

            case Servants.Atalante:
                name = "Atalante";
                break;

            case Servants.Elizabeth:
                name = "Elizabeth Bathory";
                break;

            case Servants.Marie:
                name = "Marie Antoinette";
                break;

            case Servants.Martha:
                name = "Martha";
                break;

            case Servants.Stheno:
                name = "Stheno";
                break;

            case Servants.Carmilla:
                name = "Carmilla";
                break;

            case Servants.Heracles:
                name = "Heracles";
                break;

            case Servants.Lancelot:
                name = "Lancelot";
                break;

            case Servants.TamamoCat:
                name = "Tamamo Cat";
                break;

            case Servants.AnneMary:
                name = "Anne Bonny & Mary Read";
                break;

            case Servants.Altria:
                name = "Altria Pendragon";
                break;

            case Servants.Altera:
                name = "Altera";
                break;

            case Servants.Waver:
                name = "Zhuge Liang [El-Melloi II]";
                break;

            case Servants.Vlad:
                name = "Vlad III";
                break;

            case Servants.Jeanne:
                name = "Jeanne d'Arc";
                break;

            case Servants.Orion:
                name = "Orion";
                break;

            case Servants.TamamoNoMae:
                name = "Tamamo no Mae";
                break;

            case Servants.Drake:
                name = "Francis Drake";
                break;

            default:
                name = "Servant not found!";
                break;
            }
        }