// ------------------------------------------------------------------------------
// <auto-generated>
//    Generated by avrogen.exe, version 0.9.0.0
//    Changes to this file may cause incorrect behavior and will be lost if code
//    is regenerated
// </auto-generated>
// ------------------------------------------------------------------------------
namespace org.apache.avro.test
{
	using System;
	using System.Collections.Generic;
	using System.Text;
	using Avro;
	using Avro.Specific;
	
	/// <summary>
	/// * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements.  See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership.  The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License.  You may obtain a copy of the License at\r\n *\r\n *     http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.
	/// </summary>
	public abstract class All : Avro.Specific.ISpecificProtocol
	{
		private static readonly Avro.Protocol protocol = Avro.Protocol.Parse("{\r\n  \"protocol\": \"All\",\r\n  \"namespace\": \"org.apache.avro.test\",\r\n  \"doc\": \"* Lice" +
				"nsed to the Apache Software Foundation (ASF) under one\\\\r\\\\n * or more contribut" +
				"or license agreements.  See the NOTICE file\\\\r\\\\n * distributed with this work f" +
				"or additional information\\\\r\\\\n * regarding copyright ownership.  The ASF licens" +
				"es this file\\\\r\\\\n * to you under the Apache License, Version 2.0 (the\\\\r\\\\n * \\" +
				"\\\\\"License\\\\\\\"); you may not use this file except in compliance\\\\r\\\\n * with the" +
				" License.  You may obtain a copy of the License at\\\\r\\\\n *\\\\r\\\\n *     http://ww" +
				"w.apache.org/licenses/LICENSE-2.0\\\\r\\\\n *\\\\r\\\\n * Unless required by applicable " +
				"law or agreed to in writing, software\\\\r\\\\n * distributed under the License is d" +
				"istributed on an \\\\\\\"AS IS\\\\\\\" BASIS,\\\\r\\\\n * WITHOUT WARRANTIES OR CONDITIONS O" +
				"F ANY KIND, either express or implied.\\\\r\\\\n * See the License for the specific " +
				"language governing permissions and\\\\r\\\\n * limitations under the License.\",\r\n  \"" +
				"types\": [\r\n    {\r\n      \"type\": \"enum\",\r\n      \"name\": \"AllEnum\",\r\n      \"namesp" +
				"ace\": \"org.apache.avro.test\",\r\n      \"symbols\": [\r\n        \"FOO\",\r\n        \"BAR\"" +
				"\r\n      ]\r\n    },\r\n    {\r\n      \"type\": \"fixed\",\r\n      \"name\": \"FixedTest\",\r\n  " +
				"    \"namespace\": \"org.apache.avro.test\",\r\n      \"size\": 10\r\n    },\r\n    {\r\n     " +
				" \"type\": \"record\",\r\n      \"name\": \"AllTestRecord\",\r\n      \"namespace\": \"org.apac" +
				"he.avro.test\",\r\n      \"fields\": [\r\n        {\r\n          \"name\": \"booleanTest\",\r\n" +
				"          \"type\": \"boolean\"\r\n        },\r\n        {\r\n          \"name\": \"intTest\"," +
				"\r\n          \"type\": \"int\"\r\n        },\r\n        {\r\n          \"name\": \"longTest\",\r" +
				"\n          \"type\": \"long\"\r\n        },\r\n        {\r\n          \"name\": \"floatTest\"," +
				"\r\n          \"type\": \"float\"\r\n        },\r\n        {\r\n          \"name\": \"doubleTes" +
				"t\",\r\n          \"type\": \"double\"\r\n        },\r\n        {\r\n          \"name\": \"bytes" +
				"Test\",\r\n          \"type\": \"bytes\"\r\n        },\r\n        {\r\n          \"name\": \"str" +
				"ingTest\",\r\n          \"type\": \"string\"\r\n        },\r\n        {\r\n          \"name\": " +
				"\"enumTest\",\r\n          \"type\": \"AllEnum\"\r\n        },\r\n        {\r\n          \"name" +
				"\": \"fixedTest\",\r\n          \"type\": \"FixedTest\"\r\n        },\r\n        {\r\n         " +
				" \"name\": \"arrayTest\",\r\n          \"type\": {\r\n            \"type\": \"array\",\r\n      " +
				"      \"items\": \"long\"\r\n          }\r\n        },\r\n        {\r\n          \"name\": \"ma" +
				"pTest\",\r\n          \"type\": {\r\n            \"type\": \"map\",\r\n            \"values\": " +
				"\"long\"\r\n          }\r\n        },\r\n        {\r\n          \"name\": \"nestedTest\",\r\n   " +
				"       \"type\": [\r\n            \"AllTestRecord\",\r\n            \"null\"\r\n          ]\r" +
				"\n        }\r\n      ]\r\n    }\r\n  ],\r\n  \"messages\": {\r\n    \"echo\": {\r\n      \"request" +
				"\": [\r\n        {\r\n          \"name\": \"allTest\",\r\n          \"type\": \"AllTestRecord\"" +
				"\r\n        }\r\n      ],\r\n      \"response\": \"AllTestRecord\"\r\n    },\r\n    \"echoParam" +
				"eters\": {\r\n      \"request\": [\r\n        {\r\n          \"name\": \"booleanTest\",\r\n    " +
				"      \"type\": \"boolean\"\r\n        },\r\n        {\r\n          \"name\": \"intTest\",\r\n  " +
				"        \"type\": \"int\"\r\n        },\r\n        {\r\n          \"name\": \"longTest\",\r\n   " +
				"       \"type\": \"long\"\r\n        },\r\n        {\r\n          \"name\": \"floatTest\",\r\n  " +
				"        \"type\": \"float\"\r\n        },\r\n        {\r\n          \"name\": \"doubleTest\",\r" +
				"\n          \"type\": \"double\"\r\n        },\r\n        {\r\n          \"name\": \"bytesTest" +
				"\",\r\n          \"type\": \"bytes\"\r\n        },\r\n        {\r\n          \"name\": \"stringT" +
				"est\",\r\n          \"type\": \"string\"\r\n        },\r\n        {\r\n          \"name\": \"enu" +
				"mTest\",\r\n          \"type\": \"AllEnum\"\r\n        },\r\n        {\r\n          \"name\": \"" +
				"fixedTest\",\r\n          \"type\": \"FixedTest\"\r\n        },\r\n        {\r\n          \"na" +
				"me\": \"arrayTest\",\r\n          \"type\": {\r\n            \"type\": \"array\",\r\n          " +
				"  \"items\": \"long\"\r\n          }\r\n        },\r\n        {\r\n          \"name\": \"mapTes" +
				"t\",\r\n          \"type\": {\r\n            \"type\": \"map\",\r\n            \"values\": \"lon" +
				"g\"\r\n          }\r\n        },\r\n        {\r\n          \"name\": \"nestedTest\",\r\n       " +
				"   \"type\": \"AllTestRecord\"\r\n        }\r\n      ],\r\n      \"response\": \"AllTestRecor" +
				"d\"\r\n    }\r\n  }\r\n}");
		public Avro.Protocol Protocol
		{
			get
			{
				return protocol;
			}
		}
		public void Request(Avro.Specific.ICallbackRequestor requestor, string messageName, object[] args, object callback)
		{
			switch(messageName)
			{
				case "echo":
				requestor.Request<org.apache.avro.test.AllTestRecord>(messageName, args, callback);
				break;

				case "echoParameters":
				requestor.Request<org.apache.avro.test.AllTestRecord>(messageName, args, callback);
				break;
			};
		}
		public abstract org.apache.avro.test.AllTestRecord echo(org.apache.avro.test.AllTestRecord allTest);
		public abstract org.apache.avro.test.AllTestRecord echoParameters(bool booleanTest, int intTest, long longTest, float floatTest, double doubleTest, byte[] bytesTest, string stringTest, org.apache.avro.test.AllEnum enumTest, org.apache.avro.test.FixedTest fixedTest, IList<System.Int64> arrayTest, IDictionary<string,System.Int64> mapTest, org.apache.avro.test.AllTestRecord nestedTest);
	}
}
