public void AsynchronousCallBackReturningStruct()
        {
            StateName    proxy = new StateName();
            IAsyncResult asr   = proxy.BeginGetStateNameStruct(new StateStructRequest
            {
                state1 = 1,
                state2 = 2,
                state3 = 3,
            }, null, null);

            asr.AsyncWaitHandle.WaitOne();
            StateStructResponse response = proxy.EndGetStateNameStruct(asr);

            Assert.AreEqual("Alabama", response.stateName1);
            Assert.AreEqual("Alaska", response.stateName2);
            Assert.AreEqual("Arizona", response.stateName3);
        }
    public StateStructResponse GetStateNameStruct(StateStructRequest request)
    {
        StateStructResponse response = new StateStructResponse();

        if (request.state1 < 1 || request.state1 > m_stateNames.Length)
        {
            throw new XmlRpcFaultException(1, "State number 1 invalid");
        }
        if (request.state2 < 1 || request.state2 > m_stateNames.Length)
        {
            throw new XmlRpcFaultException(1, "State number 1 invalid");
        }
        if (request.state3 < 1 || request.state3 > m_stateNames.Length)
        {
            throw new XmlRpcFaultException(1, "State number 1 invalid");
        }
        response.stateName1 = m_stateNames[request.state1 - 1];
        response.stateName2 = m_stateNames[request.state2 - 1];
        response.stateName3 = m_stateNames[request.state3 - 1];
        return(response);
    }
 public StateStructResponse GetStateNameStruct(StateStructRequest request)
 {
   StateStructResponse response = new StateStructResponse();
   if (request.state1 < 1 || request.state1 > m_stateNames.Length)
     throw new XmlRpcFaultException(1, "State number 1 invalid");
   if (request.state2 < 1 || request.state2 > m_stateNames.Length)
     throw new XmlRpcFaultException(1, "State number 1 invalid");
   if (request.state3 < 1 || request.state3 > m_stateNames.Length)
     throw new XmlRpcFaultException(1, "State number 1 invalid");
   response.stateName1 = m_stateNames[request.state1 - 1];
   response.stateName2 = m_stateNames[request.state2 - 1];
   response.stateName3 = m_stateNames[request.state3 - 1];
   return response;
 }