/// <summary>
		/// Send request to Sphinx server using underlying data stream and process server response. 
		/// Connection behaviour is changed - underlying network connection will not closed until <see cref="PersistentTcpConnection.Close()"/> method is called or object is disposed.
		/// </summary>
		/// <param name="command">Command to execute</param>
		internal override void PerformCommand(CommandBase command)
		{
			ArgumentAssert.IsNotNull(command, "command");
			if (!IsConnected)
			{
				Open();
			}
			command.Serialize(DataStream);
			DataStream.Flush();
			command.Deserialize(DataStream);
		}
 internal override void PerformCommand(CommandBase command)
 {
     ArgumentAssert.IsNotNull(command, "command");
     Open();
     try 
     {
         if (!SkipHandshake) 
             base.SendHandshake();
         if (!SkipSerializeCommand) 
             command.Serialize(DataStream);
         DataStream.Flush();
         if (!SkipDeserializeCommand) 
             command.Deserialize(DataStream);
     }
     finally {
         Close();
     }
     
 }