Esempio n. 1
0
        public void showMessage(string message)
        {
            CallerChain chain = ORBInitializer.Context.CallerChain;

            if (!chain.Caller.entity.Equals(_entity))
            {
                Console.WriteLine(Resources.CallChainRefuseMessage +
                                  ChainToString.ToString(chain));
                throw new Unauthorized();
            }
            Console.WriteLine(Resources.CallChainAcceptMessage +
                              ChainToString.ToString(chain) + ": " + message);
        }
Esempio n. 2
0
        public void showMessage(string message)
        {
            CallerChain chain = ORBInitializer.Context.CallerChain;

            Console.WriteLine(Resources.CallChainProxyForwardingMessage +
                              ChainToString.ToString(chain));
            OpenBusContext context = ORBInitializer.Context;

            context.JoinChain(chain);
            foreach (ServiceOfferDesc offer in Proxy.Offers)
            {
                try {
                    MarshalByRefObject messengerObj =
                        offer.service_ref.getFacet(_messengerType);
                    if (messengerObj == null)
                    {
                        Console.WriteLine(Resources.FacetNotFoundInOffer);
                        continue;
                    }
                    Messenger messenger = messengerObj as Messenger;
                    if (messenger == null)
                    {
                        Console.WriteLine(Resources.FacetFoundWrongType);
                        continue;
                    }
                    Console.WriteLine(Resources.OfferFound);
                    // utiliza o serviço
                    messenger.showMessage(message);
                    return;
                }
                catch (Unauthorized) {
                }
                catch (Unavailable) {
                }
                catch (TRANSIENT) {
                    Console.WriteLine(Resources.ServiceTransientErrorMsg);
                }
                catch (COMM_FAILURE) {
                    Console.WriteLine(Resources.ServiceCommFailureErrorMsg);
                }
                catch (Exception e) {
                    NO_PERMISSION npe = null;
                    if (e is TargetInvocationException)
                    {
                        // caso seja uma exceção lançada pelo SDK, será uma NO_PERMISSION
                        npe = e.InnerException as NO_PERMISSION;
                    }
                    if ((npe == null) && (!(e is NO_PERMISSION)))
                    {
                        // caso não seja uma NO_PERMISSION não é uma exceção esperada então deixamos passar.
                        throw;
                    }
                    npe = npe ?? e as NO_PERMISSION;
                    bool   found = false;
                    string msg   = String.Empty;
                    switch (npe.Minor)
                    {
                    case NoLoginCode.ConstVal:
                        msg   = Resources.NoLoginCodeErrorMsg;
                        found = true;
                        break;

                    case UnknownBusCode.ConstVal:
                        msg   = Resources.UnknownBusCodeErrorMsg;
                        found = true;
                        break;

                    case UnverifiedLoginCode.ConstVal:
                        msg   = Resources.UnverifiedLoginCodeErrorMsg;
                        found = true;
                        break;

                    case InvalidRemoteCode.ConstVal:
                        msg   = Resources.InvalidRemoteCodeErrorMsg;
                        found = true;
                        break;
                    }
                    if (found)
                    {
                        Console.WriteLine(msg);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            Console.WriteLine(Resources.CallChainProxyUnavailableMessage);
            throw new Unavailable();
        }