/* | |
* Licensed to the Apache Software Foundation (ASF) under one | |
* or more contributor license agreements. See the NOTICE file | |
* distributed with this work for additional information | |
* regarding copyright ownership. The ASF licenses this file | |
* to you under the Apache License, Version 2.0 (the | |
* "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, | |
* software distributed under the License is distributed on an | |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
* KIND, either express or implied. See the License for the | |
* specific language governing permissions and limitations | |
* under the License. | |
*/ | |
namespace Apache.Qpid.Samples.Integration | |
{ | |
using System; | |
using System.Collections; | |
using System.Collections.Generic; | |
using System.Diagnostics; | |
using System.IO; | |
using System.ServiceModel; | |
using System.ServiceModel.Channels; | |
using System.ServiceModel.Description; | |
using System.Text; | |
using System.Xml; | |
public class Options | |
{ | |
private string broker; | |
private int port; | |
private int messageCount; | |
private EndpointAddress address; | |
private TimeSpan timeout; | |
private string content; | |
public Options(string[] args) | |
{ | |
this.broker = "127.0.0.1"; | |
this.port = 5672; | |
this.messageCount = 1; | |
this.timeout = TimeSpan.FromSeconds(0); | |
Parse(args); | |
} | |
private void Parse(string[] args) | |
{ | |
int argCount = args.Length; | |
int current = 0; | |
bool typeSelected = false; | |
while ((current + 1) < argCount) | |
{ | |
string arg = args[current]; | |
if (arg == "--count") | |
{ | |
arg = args[++current]; | |
int i = Int32.Parse(arg); | |
if (i >= 0) | |
{ | |
this.messageCount = i; | |
} | |
} | |
else if (arg == "--broker") | |
{ | |
this.broker = args[++current]; | |
} | |
else if (arg == "--port") | |
{ | |
arg = args[++current]; | |
int i = int.Parse(arg); | |
if (i > 0) | |
{ | |
this.port = i; | |
} | |
} | |
else if (arg == "--timeout") | |
{ | |
arg = args[++current]; | |
int i = int.Parse(arg); | |
if (i > 0) | |
{ | |
this.timeout = TimeSpan.FromSeconds(i); | |
} | |
} | |
else if (arg == "--content") | |
{ | |
this.content = args[++current]; | |
} | |
else | |
{ | |
throw new ArgumentException(String.Format("unknown argument \"{0}\"", arg)); | |
} | |
current++; | |
} | |
if (current == argCount) | |
{ | |
throw new ArgumentException("missing argument: address"); | |
} | |
address = new EndpointAddress("amqp:" + args[current]); | |
if (timeout < TimeSpan.FromMilliseconds(100)) | |
{ | |
// WCF timeout of 0 really means no time for even a single message transfer | |
timeout = TimeSpan.FromMilliseconds(100); | |
} | |
} | |
public EndpointAddress Address | |
{ | |
get { return this.address; } | |
} | |
public string Broker | |
{ | |
get { return this.broker; } | |
} | |
public string Content | |
{ | |
get | |
{ | |
if (content == null) | |
{ | |
return String.Empty; | |
} | |
return content; | |
} | |
} | |
public int Count | |
{ | |
get { return this.messageCount; } | |
} | |
public int Port | |
{ | |
get { return this.port; } | |
} | |
public TimeSpan Timeout | |
{ | |
get { return this.timeout; } | |
} | |
} | |
} |