--- /dev/null
+<Window x:Class="Pithos.Client.WPF.FileProperties.ContainerPropertiesView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ Title="ContainerPropertiesView" Height="300" Width="300"
+ Background="#FFD4D0C8">
+ <Window.Resources>
+ <ResourceDictionary>
+ <ResourceDictionary.MergedDictionaries>
+ <ResourceDictionary Source="..\PithosStyles.xaml" />
+ </ResourceDictionary.MergedDictionaries>
+ </ResourceDictionary>
+ </Window.Resources>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ <RowDefinition Height="Auto"/>
+ </Grid.RowDefinitions>
+ <Grid Grid.Row="0" Margin="5">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto"/>
+ <ColumnDefinition Width="*"/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <Image x:Name="FileIcon" Margin="5" Grid.Column="0" Stretch="None" Source="/Pithos.Client.WPF;component/Images/Container.png" />
+ <TextBlock x:Name="ContainerName" Margin="5" Grid.Column="1" Text="Container Name" FontSize="16" FontWeight="Bold"/>
+ <TextBlock x:Name="ShortSize" Margin="5" Text="345 KB" FontWeight="Bold" FontSize="14" Grid.Column="2" />
+ </Grid>
+ <GroupBox Header="General" Grid.Row="1" Margin="5">
+ <Grid>
+ <Grid.Resources>
+ <Style x:Key="NameColumnStyle" TargetType="TextBlock">
+ <Setter Property="HorizontalAlignment" Value="Right"/>
+ <Setter Property="Margin" Value="5,2"/>
+ </Style>
+ <Style x:Key="ValueColumnStyle" TargetType="TextBlock">
+ <Setter Property="HorizontalAlignment" Value="Left"/>
+ <Setter Property="Margin" Value="5,2"/>
+ </Style>
+ </Grid.Resources>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="Auto" />
+ <ColumnDefinition Width="*"/>
+ </Grid.ColumnDefinitions>
+ <Grid.RowDefinitions>
+ <RowDefinition/>
+ <RowDefinition/>
+ <RowDefinition/>
+ <RowDefinition/>
+ <RowDefinition/>
+ <RowDefinition/>
+ </Grid.RowDefinitions>
+ <TextBlock Text="Count :" Grid.Row="0" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+ <TextBlock Text="Size :" Grid.Row="1" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+ <TextBlock Text="Modified :" Grid.Row="3" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+ <TextBlock Text="Block Size :" Grid.Row="4" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+ <TextBlock Text="Block Hash :" Grid.Row="5" Grid.Column="0" Style="{StaticResource ResourceKey=NameColumnStyle}"/>
+ <TextBlock x:Name="Count" Text="123" Grid.Row="0" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+ <TextBlock x:Name="Size" Text="345 KB (345,332 bytes)" Grid.Row="1" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+ <TextBlock x:Name="Modified" Text="28/10/2011 11:34 AM" Grid.Row="3" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+ <TextBlock x:Name="BlockSize" Text="4012354486" Grid.Row="4" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+ <TextBlock x:Name="BlockHash" Text="2345456" Grid.Row="5" Grid.Column="1" Style="{StaticResource ResourceKey=ValueColumnStyle}"/>
+ </Grid>
+ </GroupBox>
+
+ <StackPanel Orientation="Horizontal" Grid.Row="3" HorizontalAlignment="Right">
+ <Button Name="SaveChanges" Content="OK" Margin="5,5,10,5" Style="{StaticResource ButtonStyle}"/>
+ <Button Name="RejectChanges" Content="Cancel" Margin="5,5,10,5" Style="{StaticResource ButtonStyle}"/>
+ <Button Name="ApplyChanges" Content="Apply" Style="{StaticResource ButtonStyle}" />
+ </StackPanel>
+
+ </Grid>
+</Window>
--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace Pithos.Client.WPF.FileProperties
+{
+ /// <summary>
+ /// Interaction logic for ContainerPropertiesView.xaml
+ /// </summary>
+ public partial class ContainerPropertiesView : Window
+ {
+ public ContainerPropertiesView()
+ {
+ InitializeComponent();
+ }
+ }
+}
--- /dev/null
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.ComponentModel.Composition;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using System.Text;
+using Caliburn.Micro;
+using Pithos.Network;
+
+namespace Pithos.Client.WPF.FileProperties
+{
+ [Export(typeof(ContainerPropertiesViewModel))]
+ public class ContainerPropertiesViewModel:Screen
+ {
+ /// <summary>
+ /// Name of the displayed container
+ /// </summary>
+ public string ContainerName { get; set; }
+ /// <summary>
+ /// Window title
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// Count of files in the container
+ /// </summary>
+ public long Count { get; set; }
+
+ /// <summary>
+ /// Date of last modification
+ /// </summary>
+ public DateTime Modified { get; set; }
+
+ /// <summary>
+ /// Total size of the container in bytes
+ /// </summary>
+ public string Size { get; set; }
+
+ /// <summary>
+ /// Total size of the container formatted in KB,MB etc
+ /// </summary>
+ public string ShortSize { get; set; }
+
+ /// <summary>
+ /// Block size used by the container
+ /// </summary>
+ public int BlockSize { get; set; }
+
+ /// <summary>
+ /// Hash algorithm used to calculate block hashes
+ /// </summary>
+ public string BlockHash { get; set; }
+
+ /// <summary>
+ /// Reference to the parent Shell
+ /// </summary>
+ protected ShellViewModel Shell { get; set; }
+
+ private ContainerInfo _container;
+ /// <summary>
+ /// The displayed ContainerInfo
+ /// </summary>
+ protected ContainerInfo Container
+ {
+ get { return _container; }
+ set
+ {
+ _container = value;
+
+ Count = value.Count;
+ ShortSize = value.Bytes.ToByteSize();
+ Size = String.Format("{0} ({1:N0} bytes)", ShortSize, value.Bytes);
+ Modified = value.Last_Modified;
+ BlockSize = value.BlockSize;
+ BlockHash = value.BlockHash;
+ ContainerName = Uri.UnescapeDataString(value.Name.Split('/').Last());
+
+ NotifyOfPropertyChange(() => Container);
+ }
+ }
+
+
+
+
+ public ContainerPropertiesViewModel(ShellViewModel shell, ContainerInfo container, string localFolderName)
+ {
+ if (shell==null)
+ throw new ArgumentNullException("shell");
+ if (container==null)
+ throw new ArgumentNullException("container");
+ if (String.IsNullOrWhiteSpace(localFolderName))
+ throw new ArgumentNullException("localFolderName");
+ Contract.EndContractBlock();
+
+ Shell = shell;
+ ContainerName = localFolderName;
+ Container = container;
+ Title = String.Format("{0} Properties", container.Name);
+
+ }
+
+
+
+ public void Refresh()
+ {
+ Container = Shell.RefreshContainerInfo(Container);
+ }
+
+ public override void CanClose(Action<bool> callback)
+ {
+ base.CanClose(callback);
+ }
+
+ public void SaveChanges()
+ {
+ DoSave();
+ TryClose();
+ }
+
+ public void RejectChanges()
+ {
+ TryClose();
+ }
+
+ public void ApplyChanges()
+ {
+ DoSave();
+ }
+
+ private void DoSave()
+ {
+
+ }
+
+ }
+}
using System.Windows.Interop;
using System.Windows.Media.Imaging;
using Caliburn.Micro;
+using Pithos.Client.WPF.FileProperties;
using Pithos.Interfaces;
namespace Pithos.Client.WPF
/// TODO: Update summary.
/// </summary>
[Export(typeof(FilePropertiesViewModel))]
- public class FilePropertiesViewModel : Screen, IShell
+ public class FilePropertiesViewModel : Screen
{
private string _title;
public string Title
((IDictionary<string,string>)Permissions).Clear();
value.Permissions.Apply(perm=>Permissions.Add(perm.Key,perm.Value));
Kind=value.Content_Type;
- ShortSize = ByteSize(value.Bytes);
+ ShortSize = value.Bytes.ToByteSize();
Size = String.Format("{0} ({1:N0} bytes)", ShortSize, value.Bytes);
Where = Uri.UnescapeDataString(value.Name);
FileName = Uri.UnescapeDataString(value.Name.Split('/').Last());
}
- static string[] sizeSuffixes = {
- "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
-
- public string ByteSize(long size)
- {
-
- const string formatTemplate = "{0}{1:0.#} {2}";
-
- if (size == 0)
- {
- return string.Format(formatTemplate, null, 0, sizeSuffixes[0]);
- }
-
- var absSize = Math.Abs((double)size);
- var fpPower = Math.Log(absSize, 1000);
- var intPower = (int)fpPower;
- var iUnit = intPower >= sizeSuffixes.Length
- ? sizeSuffixes.Length - 1
- : intPower;
- var normSize = absSize / Math.Pow(1000, iUnit);
-
- return string.Format(
- formatTemplate,
- size < 0 ? "-" : null, normSize, sizeSuffixes[iUnit]);
- }
-
}
}
--- /dev/null
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Pithos.Client.WPF.FileProperties
+{
+ public static class SizeExtensions
+ {
+
+
+ static readonly string[] SizeSuffixes = {
+ "B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
+
+ public static string ToByteSize(this long size)
+ {
+
+ const string formatTemplate = "{0}{1:0.#} {2}";
+
+ if (size == 0)
+ {
+ return string.Format(formatTemplate, null, 0, SizeSuffixes[0]);
+ }
+
+ var absSize = Math.Abs((double)size);
+ var fpPower = Math.Log(absSize, 1000);
+ var intPower = (int)fpPower;
+ var iUnit = intPower >= SizeSuffixes.Length
+ ? SizeSuffixes.Length - 1
+ : intPower;
+ var normSize = absSize / Math.Pow(1000, iUnit);
+
+ return string.Format(
+ formatTemplate,
+ size < 0 ? "-" : null, normSize, SizeSuffixes[iUnit]);
+ }
+
+ }
+}
<Compile Include="Caliburn\Micro\Logging\log4netLogger.cs" />
<Compile Include="Configuration\PithosSettings.cs" />
<Compile Include="FileEntry.cs" />
+ <Compile Include="FileProperties\ContainerPropertiesView.xaml.cs">
+ <DependentUpon>ContainerPropertiesView.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="FileProperties\ContainerPropertiesViewModel.cs" />
<Compile Include="FileProperties\FilePropertiesView.xaml.cs">
<DependentUpon>FilePropertiesView.xaml</DependentUpon>
</Compile>
<Compile Include="FileProperties\FilePropertiesViewModel.cs" />
+ <Compile Include="FileProperties\SizeExtensions.cs" />
<Compile Include="NativeMethods.cs" />
<Compile Include="Notification.cs" />
<Compile Include="PithosAccount.cs" />
<Compile Include="ShellViewModel.cs" />
<Compile Include="Services\StatusService.cs" />
<Compile Include="Wpf32Window.cs" />
+ <Page Include="FileProperties\ContainerPropertiesView.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="FileProperties\FilePropertiesView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<EmbedInteropTypes>False</EmbedInteropTypes>
</COMReference>
</ItemGroup>
+ <ItemGroup>
+ <Resource Include="Images\Container.png" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<TextBlock Text="Proxy"/>
</StackPanel>
</TabItem.Header>
- <GroupBox Header="Proxy Settings" Height="275" Margin="10,5" VerticalAlignment="Top" Width="396">
- <Grid>
+ <Grid Margin="10,5">
<RadioButton Name="Settings_UseDefaultProxy" Content="Use System Defaults" Margin="5,6,5,0" Height="16" VerticalAlignment="Top"/>
<RadioButton Name="Settings_UseManualProxy" Content="Manual" Margin="5,28,5,0" Height="16" VerticalAlignment="Top"/>
<Label Content="Server" Height="28" HorizontalAlignment="Left" Margin="5,47,0,0" Name="label2" VerticalAlignment="Top" />
</Grid>
</GroupBox>
</Grid>
- </GroupBox>
</TabItem>
<TabItem VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch">
<TabItem.Header>
// -----------------------------------------------------------------------
+using System;
+using System.ServiceModel.Description;
using Caliburn.Micro;
using System.ServiceModel;
using System.ComponentModel.Composition;
[Import]
public PithosMonitor Monitor { get; set; }
+ [Import]
+ public IEventAggregator Events { get; set; }
+
public StatusService()
{
IoC.BuildUp(this);
- }
-
- private IEventAggregator _events;
-
- [ImportingConstructor]
- public StatusService(IStatusChecker checker,IEventAggregator events)
- {
- Checker = checker;
- _events = events;
- }
-
+ }
public FileOverlayStatus GetStatus(string filePath)
{
public void ShowProperties(string fileName)
{
- _events.Publish(new ShowFilePropertiesEvent(fileName));
+ Events.Publish(new ShowFilePropertiesEvent(fileName));
+ }
+
+ public static ServiceHost Start()
+ {
+ // Create a ServiceHost for the CalculatorService type and provide the base address.
+ var baseAddress = new Uri("net.pipe://localhost/pithos");
+ var service = new ServiceHost(typeof(StatusService), baseAddress);
+
+ var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
+
+ service.AddServiceEndpoint(typeof(IStatusService), binding, "net.pipe://localhost/pithos/statuscache");
+ service.AddServiceEndpoint(typeof(ISettingsService), binding, "net.pipe://localhost/pithos/settings");
+ service.AddServiceEndpoint(typeof(ICommandsService), binding, "net.pipe://localhost/pithos/commands");
+
+
+ //// Add a mex endpoint
+ var smb = new ServiceMetadataBehavior
+ {
+ HttpGetEnabled = true,
+ HttpGetUrl = new Uri("http://localhost:30000/pithos/mex")
+ };
+ service.Description.Behaviors.Add(smb);
+
+
+ service.Open();
+ return service;
+ }
+
+ public static void Stop(ServiceHost statusService)
+ {
+ if (statusService == null)
+ return;
+
+ if (statusService.State == CommunicationState.Faulted)
+ statusService.Abort();
+ else if (statusService.State != CommunicationState.Closed)
+ statusService.Close();
+
}
}
}
<Separator />
<MenuItem Header="Preferences ..." x:Name="ShowPreferences" cal:Message.Attach="ShowPreferences" />
<Separator />
- <MenuItem Header="Properties ..." x:Name="ShowFileProperties" cal:Message.Attach="ShowFileProperties" />
- <Separator />
<MenuItem Header="Exit" Name="ExitPithos" cal:Message.Attach="ExitPithos" />
</ContextMenu>
</tb:TaskbarIcon.ContextMenu>
using System.Collections.Concurrent;
+using System.ComponentModel;
using System.ComponentModel.Composition;
using System.Diagnostics;
using System.Diagnostics.Contracts;
using Caliburn.Micro;
using Hardcodet.Wpf.TaskbarNotification;
using Pithos.Client.WPF.Configuration;
+using Pithos.Client.WPF.FileProperties;
using Pithos.Client.WPF.Properties;
using Pithos.Client.WPF.SelectiveSynch;
+using Pithos.Client.WPF.Services;
using Pithos.Core;
using Pithos.Interfaces;
using System;
using System.ComponentModel.Composition;
[Export(typeof(IShell))]
- public class ShellViewModel : Screen, IStatusNotification, IShell,
- IHandle<Notification>, IHandle<SelectiveSynchChanges>
+ public class ShellViewModel : Screen, IStatusNotification, IShell,
+ IHandle<Notification>, IHandle<SelectiveSynchChanges>, IHandle<ShowFilePropertiesEvent>
{
private IStatusChecker _statusChecker;
protected override void OnActivate()
{
base.OnActivate();
- foreach (var account in Settings.Accounts)
+
+
+ var tasks=from account in Settings.Accounts
+ select MonitorAccount(account);
+
+ try
{
- MonitorAccount(account);
+ Task.Factory.Iterate(tasks).Wait();
+ _statusService=StatusService.Start();
+
+ }
+ catch (AggregateException exc)
+ {
+ exc.Handle(e =>{
+ Log.Error("Error while starting monitoring", e);
+ return true;
+ });
+ throw;
}
+
+ }
- StartStatusService();
+ protected override void OnDeactivate(bool close)
+ {
+ base.OnDeactivate(close);
+ if (close)
+ {
+ StatusService.Stop(_statusService);
+ _statusService = null;
+ }
}
- public void MonitorAccount(AccountSettings account)
+ public Task MonitorAccount(AccountSettings account)
{
- Task.Factory.StartNew(() =>
+ return Task.Factory.StartNew(() =>
{
PithosMonitor monitor = null;
var accountName = account.AccountName;
var fileProperties = new FilePropertiesViewModel(this, info,filePath);
_windowManager.ShowWindow(fileProperties);
+ }
+
+ public void ShowContainerProperties()
+ {
+ var account = Settings.Accounts.First(acc => acc.IsActive);
+ var dir = new DirectoryInfo(account.RootPath);
+ var fullName = (from folder in dir.EnumerateDirectories()
+ where (folder.Attributes & FileAttributes.Hidden) == 0
+ select folder.FullName).First();
+ ShowContainerProperties(fullName);
+ }
+
+ public void ShowContainerProperties(string filePath)
+ {
+ if (String.IsNullOrWhiteSpace(filePath))
+ throw new ArgumentNullException("filePath");
+ if (!Directory.Exists(filePath))
+ throw new ArgumentException(String.Format("Non existent file {0}",filePath),"filePath");
+ Contract.EndContractBlock();
+
+ var pair=(from monitor in Monitors
+ where filePath.StartsWith(monitor.Value.RootPath, StringComparison.InvariantCultureIgnoreCase)
+ select monitor).FirstOrDefault();
+ var account = pair.Key;
+ var accountMonitor = pair.Value;
+ ContainerInfo info = accountMonitor.GetContainerInfo(filePath);
+
+
+
+ var containerProperties = new ContainerPropertiesViewModel(this, info,filePath);
+ _windowManager.ShowWindow(containerProperties);
}
public ObjectInfo RefreshObjectInfo(ObjectInfo currentInfo)
return newInfo;
}
+ public ContainerInfo RefreshContainerInfo(ContainerInfo container)
+ {
+ if (container == null)
+ throw new ArgumentNullException("container");
+ Contract.EndContractBlock();
+
+ var monitor = Monitors[container.Account];
+ var newInfo = monitor.CloudClient.GetContainerInfo(container.Account, container.Name);
+ return newInfo;
+ }
+
+
public void ToggleSynching()
{
bool isPaused=false;
}
}
- private void StartStatusService()
- {
- // Create a ServiceHost for the CalculatorService type and provide the base address.
- var baseAddress = new Uri("net.pipe://localhost/pithos");
- _statusService = new ServiceHost(typeof(StatusService), baseAddress);
-
- var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
-
- _statusService.AddServiceEndpoint(typeof(IStatusService), binding, "net.pipe://localhost/pithos/statuscache");
- _statusService.AddServiceEndpoint(typeof(ISettingsService), binding, "net.pipe://localhost/pithos/settings");
-
-
- //// Add a mex endpoint
- var smb = new ServiceMetadataBehavior
- {
- HttpGetEnabled = true,
- HttpGetUrl = new Uri("http://localhost:30000/pithos/mex")
- };
- _statusService.Description.Behaviors.Add(smb);
-
-
- _statusService.Open();
- }
-
- private void StopStatusService()
- {
- if (_statusService == null)
- return;
-
- if (_statusService.State == CommunicationState.Faulted)
- _statusService.Abort();
- else if (_statusService.State != CommunicationState.Closed)
- _statusService.Close();
- _statusService = null;
-
- }
#region Event Handlers
public void Handle(SelectiveSynchChanges message)
}
}
#endregion
+
+ public void Handle(ShowFilePropertiesEvent message)
+ {
+ if (message == null)
+ throw new ArgumentNullException("message");
+ if (String.IsNullOrWhiteSpace(message.FileName) )
+ throw new ArgumentException("message");
+ Contract.EndContractBlock();
+
+ var fileName = message.FileName;
+
+ if (File.Exists(fileName))
+ this.ShowFileProperties(fileName);
+ else if (Directory.Exists(fileName))
+ this.ShowContainerProperties(fileName);
+ }
}
}
container = parts[0];
relativeUrl = String.Join("/", parts.Splice(1));
}
-
- /*return new ObjectInfo
- {
- Account = accountName,
- Container = container,
- Name = relativeUrl,
- Content_Type="application/pdf",
- Bytes = 123456,
- Hash = "8902372934sjhshjfsdjkf223894sdgh",
- Last_Modified = DateTime.Today.AddDays(-1),
- ModifiedBy = accountName,
- Version = 12312455,
- VersionTimestamp = DateTime.Today.AddDays(-1)
- };*/
-
+
var client = new CloudFilesClient(accountInfo);
var objectInfo=client.GetObjectInfo(accountName, container, relativeUrl);
return objectInfo;
}
+
+ public ContainerInfo GetContainerInfo(string filePath)
+ {
+ if (String.IsNullOrWhiteSpace(filePath))
+ throw new ArgumentNullException("filePath");
+ Contract.EndContractBlock();
+
+ var file=new FileInfo(filePath);
+ var relativePath = file.AsRelativeTo(RootPath);
+
+ string accountName,container;
+
+ var parts=relativePath.Split('\\');
+
+ var accountInfo = _accountInfo;
+ if (relativePath.StartsWith(FolderConstants.OthersFolder))
+ {
+ accountName = parts[1];
+ container = parts[2];
+ //Create the root URL for the target account
+ var oldName = UserName;
+ var absoluteUri = _accountInfo.StorageUri.AbsoluteUri;
+ var nameIndex=absoluteUri.IndexOf(oldName);
+ var root=absoluteUri.Substring(0, nameIndex);
+
+ accountInfo = new AccountInfo
+ {
+ UserName = accountName,
+ AccountPath = Path.Combine(accountInfo.AccountPath, parts[0], parts[1]),
+ StorageUri = new Uri(root + accountName),
+ BlockHash=accountInfo.BlockHash,
+ BlockSize=accountInfo.BlockSize,
+ Token=accountInfo.Token
+ };
+ }
+ else
+ {
+ accountName = UserName;
+ container = parts[0];
+ }
+
+ var client = new CloudFilesClient(accountInfo);
+ var containerInfo=client.GetContainerInfo(accountName, container);
+ return containerInfo;
+ }
}
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
+using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
{
FileOverlayStatus GetFileOverlayStatus(string path);
- PithosStatus GetPithosStatus();
+ PithosStatus GetPithosStatus();
}
case HttpStatusCode.NoContent:
var containerInfo = new ContainerInfo
{
+ Account=account,
Name = container,
Count =
long.Parse(client.GetHeaderValue("X-Container-Object-Count")),
Bytes = long.Parse(client.GetHeaderValue("X-Container-Bytes-Used")),
BlockHash = client.GetHeaderValue("X-Container-Block-Hash"),
- BlockSize=int.Parse(client.GetHeaderValue("X-Container-Block-Size"))
+ BlockSize=int.Parse(client.GetHeaderValue("X-Container-Block-Size")),
+ Last_Modified=client.LastModified
};
return containerInfo;
case HttpStatusCode.NotFound:
+using System;
+
namespace Pithos.Network
{
public class ContainerInfo
public string BlockHash { get; set; }
public int BlockSize { get; set; }
+ public DateTime Last_Modified { get; set; }
+
public static ContainerInfo Empty=new ContainerInfo();
}
}
\ No newline at end of file
// This project is open source. Released under the XYZ license
// </copyright>
+using System.Linq;
using Microsoft.Win32;
namespace Pithos.ShellExtensions
{
get
{
- Debug.WriteLine( String.Format("Managed path is {0}\r\n Current Path is {1}", PithosPath, CurrentFile),LogCategories.Shell);
- return CurrentFolder.StartsWith(PithosPath, true, null);
+
+ var accountPath=(from account in Settings.Accounts
+ where CurrentFile.StartsWith(account.RootPath, StringComparison.InvariantCultureIgnoreCase)
+ select account.RootPath).FirstOrDefault();
+ Debug.WriteLine(String.Format("Account path is {0}\r\n Current Path is {1}", accountPath, CurrentFile), LogCategories.Shell);
+ return !String.IsNullOrWhiteSpace(accountPath);
}
}
File,
/// <summary>
+ /// Display the item both on container folders
+ /// </summary>
+ Container,
+ /// <summary>
/// Display the item both on folders and files
/// </summary>
All
DisplayFlags=DisplayFlags.All,
MenuBitmap = _gotoBitmap
}},
- /*{"showProperties",new MenuItem{
- MenuText = "&Pithos File Properties",
+ {"showProperties",new MenuItem{
+ MenuText = "&Pithos Properties",
Verb = "showProperties",
VerbCanonicalName = "PITHOSProperties",
- VerbHelpText = "Pithos File Properties",
+ VerbHelpText = "Pithos Properties",
MenuDisplayId = 2,
MenuCommand=OnShowProperties,
- DisplayFlags=DisplayFlags.File,
+ DisplayFlags=DisplayFlags.All,
MenuBitmap = _propertiesBitmap
- }},*/
+ }}/*,
{"prevVersions",new MenuItem{
MenuText = "&Show Previous Versions",
Verb = "prevVersions",
MenuCommand=OnVerbDisplayFileName,
DisplayFlags=DisplayFlags.File,
MenuBitmap=_versionBitmap
- }}
+ }}*/
};
IoC.Current.Compose(this);
void OnShowProperties(IntPtr hWnd)
{
-
+ var filePath = Context.CurrentFile ?? Context.CurrentFolder;
+ if (String.IsNullOrWhiteSpace(filePath))
+ {
+ Debug.WriteLine("No current file or folder");
+ return;
+ }
+ else
+ {
+ Debug.WriteLine("Will display properties for {0}",filePath);
+ }
+
+ using (var client = PithosHost.GetCommandsClient())
+ {
+ client.ShowProperties(Context.CurrentFile);
+ }
}
void OnVerbDisplayFileName(IntPtr hWnd)
<None Include="Service References\PithosService\mex1.xsd">
<SubType>Designer</SubType>
</None>
+ <None Include="Service References\PithosService\mex2.wsdl" />
<None Include="Service References\PithosService\mex2.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Service References\PithosService\mex4.xsd">
<SubType>Designer</SubType>
</None>
+ <None Include="Service References\PithosService\mex5.xsd">
+ <SubType>Designer</SubType>
+ </None>
<None Include="Service References\PithosService\StatusService.wsdl" />
</ItemGroup>
<ItemGroup>
return new SettingsServiceClient(binding, remoteAddress);
}
+
+ public static CommandsServiceClient GetCommandsClient()
+ {
+ EnsureHost();
+
+ var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
+ var remoteAddress = new EndpointAddress("net.pipe://localhost/pithos/commands");
+
+ return new CommandsServiceClient(binding, remoteAddress);
+ }
+
+
}
}
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
-// Runtime Version:4.0.30319.235
+// Runtime Version:4.0.30319.488
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
base.InvokeAsync(this.onBeginGetSettingsDelegate, null, this.onEndGetSettingsDelegate, this.onGetSettingsCompletedDelegate, userState);
}
}
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.ServiceContractAttribute(Namespace="http://PITHOS.Client.Commands", ConfigurationName="PithosService.ICommandsService")]
+ public interface ICommandsService {
+
+ [System.ServiceModel.OperationContractAttribute(Action="http://PITHOS.Client.Commands/ICommandsService/ShowProperties", ReplyAction="http://PITHOS.Client.Commands/ICommandsService/ShowPropertiesResponse")]
+ void ShowProperties(string fileName);
+
+ [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://PITHOS.Client.Commands/ICommandsService/ShowProperties", ReplyAction="http://PITHOS.Client.Commands/ICommandsService/ShowPropertiesResponse")]
+ System.IAsyncResult BeginShowProperties(string fileName, System.AsyncCallback callback, object asyncState);
+
+ void EndShowProperties(System.IAsyncResult result);
+ }
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public interface ICommandsServiceChannel : Pithos.ShellExtensions.PithosService.ICommandsService, System.ServiceModel.IClientChannel {
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public partial class CommandsServiceClient : System.ServiceModel.ClientBase<Pithos.ShellExtensions.PithosService.ICommandsService>, Pithos.ShellExtensions.PithosService.ICommandsService {
+
+ private BeginOperationDelegate onBeginShowPropertiesDelegate;
+
+ private EndOperationDelegate onEndShowPropertiesDelegate;
+
+ private System.Threading.SendOrPostCallback onShowPropertiesCompletedDelegate;
+
+ public CommandsServiceClient() {
+ }
+
+ public CommandsServiceClient(string endpointConfigurationName) :
+ base(endpointConfigurationName) {
+ }
+
+ public CommandsServiceClient(string endpointConfigurationName, string remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public CommandsServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public CommandsServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(binding, remoteAddress) {
+ }
+
+ public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> ShowPropertiesCompleted;
+
+ public void ShowProperties(string fileName) {
+ base.Channel.ShowProperties(fileName);
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ public System.IAsyncResult BeginShowProperties(string fileName, System.AsyncCallback callback, object asyncState) {
+ return base.Channel.BeginShowProperties(fileName, callback, asyncState);
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ public void EndShowProperties(System.IAsyncResult result) {
+ base.Channel.EndShowProperties(result);
+ }
+
+ private System.IAsyncResult OnBeginShowProperties(object[] inValues, System.AsyncCallback callback, object asyncState) {
+ string fileName = ((string)(inValues[0]));
+ return this.BeginShowProperties(fileName, callback, asyncState);
+ }
+
+ private object[] OnEndShowProperties(System.IAsyncResult result) {
+ this.EndShowProperties(result);
+ return null;
+ }
+
+ private void OnShowPropertiesCompleted(object state) {
+ if ((this.ShowPropertiesCompleted != null)) {
+ InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
+ this.ShowPropertiesCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
+ }
+ }
+
+ public void ShowPropertiesAsync(string fileName) {
+ this.ShowPropertiesAsync(fileName, null);
+ }
+
+ public void ShowPropertiesAsync(string fileName, object userState) {
+ if ((this.onBeginShowPropertiesDelegate == null)) {
+ this.onBeginShowPropertiesDelegate = new BeginOperationDelegate(this.OnBeginShowProperties);
+ }
+ if ((this.onEndShowPropertiesDelegate == null)) {
+ this.onEndShowPropertiesDelegate = new EndOperationDelegate(this.OnEndShowProperties);
+ }
+ if ((this.onShowPropertiesCompletedDelegate == null)) {
+ this.onShowPropertiesCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnShowPropertiesCompleted);
+ }
+ base.InvokeAsync(this.onBeginShowPropertiesDelegate, new object[] {
+ fileName}, this.onEndShowPropertiesDelegate, this.onShowPropertiesCompletedDelegate, userState);
+ }
+ }
}
<MetadataFile FileName="mex2.xsd" MetadataType="Schema" ID="779f496b-6495-495b-9fa1-9c38cbe9c010" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd2" />
<MetadataFile FileName="mex3.xsd" MetadataType="Schema" ID="95acec7d-fda4-414b-918b-f868ed51aac4" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd3" />
<MetadataFile FileName="StatusService.wsdl" MetadataType="Wsdl" ID="7a81d2fc-3a1d-410d-97bd-a4f730d1de8a" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex" />
+ <MetadataFile FileName="mex5.xsd" MetadataType="Schema" ID="37c01dd7-10e7-4ad5-bae9-0a931cf51a9f" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd5" />
<MetadataFile FileName="mex1.wsdl" MetadataType="Wsdl" ID="507712dc-9927-4bb2-8278-0e63cda76fde" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?wsdl=wsdl1" />
<MetadataFile FileName="mex4.xsd" MetadataType="Schema" ID="a7781e78-500e-4f4f-9d6d-75fc24f64c0e" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?xsd=xsd4" />
+ <MetadataFile FileName="mex2.wsdl" MetadataType="Wsdl" ID="6a9fe933-3fff-42b7-872d-ed43e4bce915" SourceId="1" SourceUrl="http://localhost:30000/pithos/mex?wsdl=wsdl2" />
</Metadata>
<Extensions>
<ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:i0="http://PITHOS.Client.Status" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:i1="http://PITHOS.Client.Settings" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="StatusService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:i0="http://PITHOS.Client.Status" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:i1="http://PITHOS.Client.Settings" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:i2="http://PITHOS.Client.Commands" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="StatusService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsp:Policy wsu:Id="NetNamedPipeBinding_IStatusService_policy">
<wsp:ExactlyOne>
<wsp:All>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
+ <wsp:Policy wsu:Id="NetNamedPipeBinding_ICommandsService_policy">
+ <wsp:ExactlyOne>
+ <wsp:All>
+ <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1" />
+ <wsaw:UsingAddressing />
+ </wsp:All>
+ </wsp:ExactlyOne>
+ </wsp:Policy>
<wsdl:import namespace="http://PITHOS.Client.Status" location="http://localhost:30000/pithos/mex?wsdl=wsdl0" />
<wsdl:import namespace="http://PITHOS.Client.Settings" location="http://localhost:30000/pithos/mex?wsdl=wsdl1" />
+ <wsdl:import namespace="http://PITHOS.Client.Commands" location="http://localhost:30000/pithos/mex?wsdl=wsdl2" />
<wsdl:types />
<wsdl:binding name="NetNamedPipeBinding_IStatusService" type="i0:IStatusService">
<wsp:PolicyReference URI="#NetNamedPipeBinding_IStatusService_policy" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
+ <wsdl:binding name="NetNamedPipeBinding_ICommandsService" type="i2:ICommandsService">
+ <wsp:PolicyReference URI="#NetNamedPipeBinding_ICommandsService_policy" />
+ <soap12:binding transport="http://schemas.microsoft.com/soap/named-pipe" />
+ <wsdl:operation name="ShowProperties">
+ <soap12:operation soapAction="http://PITHOS.Client.Commands/ICommandsService/ShowProperties" style="document" />
+ <wsdl:input>
+ <soap12:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap12:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
<wsdl:service name="StatusService">
<wsdl:port name="NetNamedPipeBinding_IStatusService" binding="tns:NetNamedPipeBinding_IStatusService">
<soap12:address location="net.pipe://localhost/pithos/statuscache" />
<wsa10:Address>net.pipe://localhost/pithos/settings</wsa10:Address>
</wsa10:EndpointReference>
</wsdl:port>
+ <wsdl:port name="NetNamedPipeBinding_ICommandsService" binding="tns:NetNamedPipeBinding_ICommandsService">
+ <soap12:address location="net.pipe://localhost/pithos/commands" />
+ <wsa10:EndpointReference>
+ <wsa10:Address>net.pipe://localhost/pithos/commands</wsa10:Address>
+ </wsa10:EndpointReference>
+ </wsdl:port>
</wsdl:service>
</wsdl:definitions>
\ No newline at end of file
<bindings>
<binding digest="System.ServiceModel.Configuration.NetNamedPipeBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:<?xml version="1.0" encoding="utf-16"?><Data hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxConnections="10" name="NetNamedPipeBinding_IStatusService" transactionFlow="false" transactionProtocol="OleTransactions" transferMode="Buffered"><readerQuotas maxArrayLength="16384" maxBytesPerRead="4096" maxDepth="32" maxNameTableCharCount="16384" maxStringContentLength="8192" /><security mode="None"><transport protectionLevel="EncryptAndSign" /></security></Data>" bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_IStatusService" />
<binding digest="System.ServiceModel.Configuration.NetNamedPipeBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:<?xml version="1.0" encoding="utf-16"?><Data hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxConnections="10" name="NetNamedPipeBinding_ISettingsService" transactionFlow="false" transactionProtocol="OleTransactions" transferMode="Buffered"><readerQuotas maxArrayLength="16384" maxBytesPerRead="4096" maxDepth="32" maxNameTableCharCount="16384" maxStringContentLength="8192" /><security mode="None"><transport protectionLevel="EncryptAndSign" /></security></Data>" bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_ISettingsService" />
+ <binding digest="System.ServiceModel.Configuration.NetNamedPipeBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:<?xml version="1.0" encoding="utf-16"?><Data hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxConnections="10" name="NetNamedPipeBinding_ICommandsService" transactionFlow="false" transactionProtocol="OleTransactions" transferMode="Buffered"><readerQuotas maxArrayLength="16384" maxBytesPerRead="4096" maxDepth="32" maxNameTableCharCount="16384" maxStringContentLength="8192" /><security mode="None"><transport protectionLevel="EncryptAndSign" /></security></Data>" bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_ICommandsService" />
</bindings>
<endpoints>
<endpoint normalizedDigest="<?xml version="1.0" encoding="utf-16"?><Data address="net.pipe://localhost/pithos/statuscache" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IStatusService" contract="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService" />" digest="<?xml version="1.0" encoding="utf-16"?><Data address="net.pipe://localhost/pithos/statuscache" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IStatusService" contract="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService" />" contractName="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService" />
<endpoint normalizedDigest="<?xml version="1.0" encoding="utf-16"?><Data address="net.pipe://localhost/pithos/settings" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISettingsService" contract="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService" />" digest="<?xml version="1.0" encoding="utf-16"?><Data address="net.pipe://localhost/pithos/settings" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISettingsService" contract="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService" />" contractName="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService" />
+ <endpoint normalizedDigest="<?xml version="1.0" encoding="utf-16"?><Data address="net.pipe://localhost/pithos/commands" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ICommandsService" contract="PithosService.ICommandsService" name="NetNamedPipeBinding_ICommandsService" />" digest="<?xml version="1.0" encoding="utf-16"?><Data address="net.pipe://localhost/pithos/commands" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ICommandsService" contract="PithosService.ICommandsService" name="NetNamedPipeBinding_ICommandsService" />" contractName="PithosService.ICommandsService" name="NetNamedPipeBinding_ICommandsService" />
</endpoints>
</configurationSnapshot>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
-<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="oXFbhh/FL3s+zC86TD/5JLzGqUw=">
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="mHr9riLu0k/55JC5NK6Fa8CDlPU=">
<bindingConfigurations>
<bindingConfiguration bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_IStatusService">
<properties>
</property>
</properties>
</bindingConfiguration>
+ <bindingConfiguration bindingType="netNamedPipeBinding" name="NetNamedPipeBinding_ICommandsService">
+ <properties>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>NetNamedPipeBinding_ICommandsService</serializedValue>
+ </property>
+ <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>00:01:00</serializedValue>
+ </property>
+ <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>00:01:00</serializedValue>
+ </property>
+ <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>00:10:00</serializedValue>
+ </property>
+ <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>00:01:00</serializedValue>
+ </property>
+ <property path="/transactionFlow" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>False</serializedValue>
+ </property>
+ <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Buffered</serializedValue>
+ </property>
+ <property path="/transactionProtocol" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransactionProtocol, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>OleTransactions</serializedValue>
+ </property>
+ <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>StrongWildcard</serializedValue>
+ </property>
+ <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>524288</serializedValue>
+ </property>
+ <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>65536</serializedValue>
+ </property>
+ <property path="/maxConnections" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>10</serializedValue>
+ </property>
+ <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>65536</serializedValue>
+ </property>
+ <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>32</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>8192</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>16384</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>4096</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>16384</serializedValue>
+ </property>
+ <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.NetNamedPipeSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.NetNamedPipeSecurityElement</serializedValue>
+ </property>
+ <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.NetNamedPipeSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.NamedPipeTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.NamedPipeTransportSecurityElement</serializedValue>
+ </property>
+ <property path="/security/transport/protectionLevel" isComplexType="false" isExplicitlyDefined="true" clrType="System.Net.Security.ProtectionLevel, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>EncryptAndSign</serializedValue>
+ </property>
+ </properties>
+ </bindingConfiguration>
</bindingConfigurations>
<endpoints>
<endpoint name="NetNamedPipeBinding_IStatusService" contract="PithosService.IStatusService" bindingType="netNamedPipeBinding" address="net.pipe://localhost/pithos/statuscache" bindingConfiguration="NetNamedPipeBinding_IStatusService">
</property>
</properties>
</endpoint>
+ <endpoint name="NetNamedPipeBinding_ICommandsService" contract="PithosService.ICommandsService" bindingType="netNamedPipeBinding" address="net.pipe://localhost/pithos/commands" bindingConfiguration="NetNamedPipeBinding_ICommandsService">
+ <properties>
+ <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>net.pipe://localhost/pithos/commands</serializedValue>
+ </property>
+ <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>netNamedPipeBinding</serializedValue>
+ </property>
+ <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>NetNamedPipeBinding_ICommandsService</serializedValue>
+ </property>
+ <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>PithosService.ICommandsService</serializedValue>
+ </property>
+ <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+ </property>
+ <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue><Header /></serializedValue>
+ </property>
+ <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+ </property>
+ <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+ </property>
+ <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+ </property>
+ <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>My</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>LocalMachine</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>False</serializedValue>
+ </property>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>NetNamedPipeBinding_ICommandsService</serializedValue>
+ </property>
+ <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ </properties>
+ </endpoint>
</endpoints>
</SavedWcfConfigurationInformation>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://PITHOS.Client.Commands" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://PITHOS.Client.Commands" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <xsd:schema targetNamespace="http://PITHOS.Client.Commands/Imports">
+ <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd5" namespace="http://PITHOS.Client.Commands" />
+ <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd0" namespace="http://PITHOS.Client.Status" />
+ <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+ <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/Pithos.Interfaces" />
+ <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd3" namespace="http://PITHOS.Client.Settings" />
+ <xsd:import schemaLocation="http://localhost:30000/pithos/mex?xsd=xsd4" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="ICommandsService_ShowProperties_InputMessage">
+ <wsdl:part name="parameters" element="tns:ShowProperties" />
+ </wsdl:message>
+ <wsdl:message name="ICommandsService_ShowProperties_OutputMessage">
+ <wsdl:part name="parameters" element="tns:ShowPropertiesResponse" />
+ </wsdl:message>
+ <wsdl:portType name="ICommandsService">
+ <wsdl:operation name="ShowProperties">
+ <wsdl:input wsaw:Action="http://PITHOS.Client.Commands/ICommandsService/ShowProperties" message="tns:ICommandsService_ShowProperties_InputMessage" />
+ <wsdl:output wsaw:Action="http://PITHOS.Client.Commands/ICommandsService/ShowPropertiesResponse" message="tns:ICommandsService_ShowProperties_OutputMessage" />
+ </wsdl:operation>
+ </wsdl:portType>
+</wsdl:definitions>
\ No newline at end of file
</xs:appinfo>
</xs:annotation>
</xs:enumeration>
- <xs:enumeration value="Synch">
- <xs:annotation>
- <xs:appinfo>
- <EnumerationValue xmlns="http://schemas.microsoft.com/2003/10/Serialization/">3</EnumerationValue>
- </xs:appinfo>
- </xs:annotation>
- </xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:element name="FileOverlayStatus" nillable="true" type="tns:FileOverlayStatus" />
<xs:element minOccurs="0" name="AccountName" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="ApiKey" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="IsActive" type="xs:boolean" />
+ <xs:element minOccurs="0" name="RootPath" nillable="true" type="xs:string" />
<xs:element xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="SelectiveFolders" nillable="true" type="q1:ArrayOfanyType" />
+ <xs:element minOccurs="0" name="UsePithos" type="xs:boolean" />
</xs:sequence>
</xs:complexType>
<xs:element name="AccountSettings" nillable="true" type="tns:AccountSettings" />
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://PITHOS.Client.Commands" elementFormDefault="qualified" targetNamespace="http://PITHOS.Client.Commands" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="ShowProperties">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" name="fileName" nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ShowPropertiesResponse">
+ <xs:complexType>
+ <xs:sequence />
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
- <binding name="NetNamedPipeBinding_IStatusService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
- <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+ <binding name="NetNamedPipeBinding_IStatusService" closeTimeout="00:01:00"
+ openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+ transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+ hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
+ maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
+ <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+ maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
- <transport protectionLevel="EncryptAndSign"/>
+ <transport protectionLevel="EncryptAndSign" />
</security>
</binding>
- <binding name="NetNamedPipeBinding_ISettingsService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
- <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
+ <binding name="NetNamedPipeBinding_ISettingsService" closeTimeout="00:01:00"
+ openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+ transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+ hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
+ maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
+ <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+ maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
- <transport protectionLevel="EncryptAndSign"/>
+ <transport protectionLevel="EncryptAndSign" />
+ </security>
+ </binding>
+ <binding name="NetNamedPipeBinding_ICommandsService" closeTimeout="00:01:00"
+ openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+ transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
+ hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
+ maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
+ <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+ maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+ <security mode="None">
+ <transport protectionLevel="EncryptAndSign" />
</security>
</binding>
</netNamedPipeBinding>
</bindings>
<client>
- <endpoint address="net.pipe://localhost/pithos/statuscache" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IStatusService" contract="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService"/>
- <endpoint address="net.pipe://localhost/pithos/settings" binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISettingsService" contract="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService"/>
+ <endpoint address="net.pipe://localhost/pithos/statuscache" binding="netNamedPipeBinding"
+ bindingConfiguration="NetNamedPipeBinding_IStatusService"
+ contract="PithosService.IStatusService" name="NetNamedPipeBinding_IStatusService" />
+ <endpoint address="net.pipe://localhost/pithos/settings" binding="netNamedPipeBinding"
+ bindingConfiguration="NetNamedPipeBinding_ISettingsService"
+ contract="PithosService.ISettingsService" name="NetNamedPipeBinding_ISettingsService" />
+ <endpoint address="net.pipe://localhost/pithos/commands" binding="netNamedPipeBinding"
+ bindingConfiguration="NetNamedPipeBinding_ICommandsService"
+ contract="PithosService.ICommandsService" name="NetNamedPipeBinding_ICommandsService" />
</client>
</system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup></configuration>