Browse Source

Added custom Remoting sinks

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@175 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 21 years ago
parent
commit
224b69817a
  1. 10
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj
  2. 85
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAClientChannelSink.cs
  3. 33
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAClientChannelSinkProvider.cs
  4. 62
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAServerChannelSink.cs
  5. 37
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAServerChannelSinkProvider.cs
  6. 33
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTASink.csproj
  7. 71
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/EventForwarder.cs
  8. 87
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/PrivateEventHandlersClientChannelSink.cs
  9. 33
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/PrivateEventHandlersClientChannelSinkProvider.cs
  10. 31
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/PrivateEventHandlersSink.csproj
  11. 14
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/RemotingSinks.sln
  12. 29
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/Client.exe.config
  13. 88
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/FormClient.Designer.cs
  14. 32
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/FormClient.cs
  15. 23
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/Program.cs
  16. 53
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/TestClient.csproj
  17. 19
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestCommonTypes/ChatServer.cs
  18. 29
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestCommonTypes/TestCommonTypes.csproj
  19. 25
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestCommonTypes/TextMessageEventArgs.cs
  20. 24
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestServer/Program.cs
  21. 30
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestServer/Server.exe.config
  22. 46
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestServer/TestServer.csproj

10
src/AddIns/Misc/Debugger/Debugger.Core/Project/Debugger.Core.csproj

@ -82,9 +82,19 @@ @@ -82,9 +82,19 @@
<Compile Include="Src\Variables\Variable.cs" />
<Compile Include="Src\Variables\VariableCollection.cs" />
<Compile Include="Src\Variables\VariableFactory.cs" />
<Compile Include="Src\RemotingSinks\InvokeOnSTASink\InvokeOnSTAServerChannelSinkProvider.cs" />
<Compile Include="Src\RemotingSinks\InvokeOnSTASink\InvokeOnSTAClientChannelSink.cs" />
<Compile Include="Src\RemotingSinks\InvokeOnSTASink\InvokeOnSTAClientChannelSinkProvider.cs" />
<Compile Include="Src\RemotingSinks\InvokeOnSTASink\InvokeOnSTAServerChannelSink.cs" />
<Compile Include="Src\RemotingSinks\PrivateEventHandlersSink\PrivateEventHandlersClientChannelSinkProvider.cs" />
<Compile Include="Src\RemotingSinks\PrivateEventHandlersSink\EventForwarder.cs" />
<Compile Include="Src\RemotingSinks\PrivateEventHandlersSink\PrivateEventHandlersClientChannelSink.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="README.TXT" />
<Folder Include="Src\RemotingSinks" />
<Folder Include="Src\RemotingSinks\InvokeOnSTASink" />
<Folder Include="Src\RemotingSinks\PrivateEventHandlersSink" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>

85
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAClientChannelSink.cs

@ -0,0 +1,85 @@ @@ -0,0 +1,85 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting.Channels;
using System.Windows.Forms;
using System.Runtime.Remoting.Messaging;
using System.IO;
using System.Threading;
namespace CustomSinks
{
class InvokeOnSTAClientChannelSink : BaseChannelSinkWithProperties, IClientFormatterSink
{
IClientFormatterSink nextSink;
public InvokeOnSTAClientChannelSink(IClientFormatterSink nextSink)
{
this.nextSink = nextSink;
}
// IClientChannelSink Members
void IClientChannelSink.AsyncProcessRequest(IClientChannelSinkStack sinkStack, IMessage msg, ITransportHeaders headers, Stream stream)
{
nextSink.AsyncProcessRequest(sinkStack, msg, headers, stream);
}
void IClientChannelSink.AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack, object state, ITransportHeaders headers, Stream stream)
{
nextSink.AsyncProcessResponse(sinkStack, state, headers, stream);
}
Stream IClientChannelSink.GetRequestStream(IMessage msg, ITransportHeaders headers)
{
return nextSink.GetRequestStream(msg, headers);
}
IClientChannelSink IClientChannelSink.NextChannelSink {
get {
return nextSink;
}
}
void IClientChannelSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, out ITransportHeaders responseHeaders, out Stream responseStream)
{
nextSink.ProcessMessage(msg, requestHeaders, requestStream, out responseHeaders, out responseStream);
}
// IMessageSink Members
IMessageCtrl IMessageSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
{
return nextSink.AsyncProcessMessage(msg, replySink);
}
IMessageSink IMessageSink.NextSink {
get {
return nextSink;
}
}
IMessage IMessageSink.SyncProcessMessage(IMessage msg)
{
IMessage response = null;
Thread thread = new Thread(new ThreadStart(delegate {
response = nextSink.SyncProcessMessage(msg);
}));
thread.Start();
while (thread.IsAlive) Application.DoEvents();
return response;
}
// IChannelSinkBase Members
System.Collections.IDictionary IChannelSinkBase.Properties {
get {
return this.Properties;
}
}
}
}

33
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAClientChannelSinkProvider.cs

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting.Channels;
using System.Collections;
namespace CustomSinks
{
class InvokeOnSTAClientChannelSinkProvider: IClientChannelSinkProvider
{
private IClientChannelSinkProvider nextProvider;
public InvokeOnSTAClientChannelSinkProvider(IDictionary properties, ICollection providerData)
{
}
IClientChannelSink IClientChannelSinkProvider.CreateSink(IChannelSender channel, string url, object remoteChannelData)
{
IClientChannelSink nextSink = nextProvider.CreateSink(channel, url, remoteChannelData);
IClientChannelSink thisSink = new InvokeOnSTAClientChannelSink(nextSink as IClientFormatterSink);
return thisSink;
}
IClientChannelSinkProvider IClientChannelSinkProvider.Next {
get {
return nextProvider;
}
set {
nextProvider = value;
}
}
}
}

62
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAServerChannelSink.cs

@ -0,0 +1,62 @@ @@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting.Channels;
using System.Windows.Forms;
using System.Runtime.Remoting.Messaging;
using System.IO;
namespace CustomSinks
{
class InvokeOnSTAServerChannelSink: BaseChannelSinkWithProperties, IServerChannelSink
{
IServerChannelSink nextSink;
public InvokeOnSTAServerChannelSink(IServerChannelSink nextSink)
{
this.nextSink = nextSink;
}
void IServerChannelSink.AsyncProcessResponse(IServerResponseChannelSinkStack sinkStack, object state, System.Runtime.Remoting.Messaging.IMessage msg, ITransportHeaders headers, System.IO.Stream stream)
{
nextSink.AsyncProcessResponse(sinkStack, state, msg, headers, stream);
}
System.IO.Stream IServerChannelSink.GetResponseStream(IServerResponseChannelSinkStack sinkStack, object state, System.Runtime.Remoting.Messaging.IMessage msg, ITransportHeaders headers)
{
return nextSink.GetResponseStream(sinkStack, state, msg, headers);
}
IServerChannelSink IServerChannelSink.NextChannelSink {
get {
return nextSink;
}
}
ServerProcessing IServerChannelSink.ProcessMessage(IServerChannelSinkStack sinkStack, System.Runtime.Remoting.Messaging.IMessage requestMsg, ITransportHeaders requestHeaders, System.IO.Stream requestStream, out System.Runtime.Remoting.Messaging.IMessage responseMsg, out ITransportHeaders responseHeaders, out System.IO.Stream responseStream)
{
if (Application.OpenForms.Count > 0) {
IMessage outResponseMsg = null;
ITransportHeaders outResponseHeaders = null;
Stream outResponseStream = null;
ServerProcessing returnValue = ServerProcessing.Complete;
Application.OpenForms[0].Invoke(new EventHandler(delegate
{
returnValue = nextSink.ProcessMessage(sinkStack, requestMsg, requestHeaders, requestStream, out outResponseMsg, out outResponseHeaders, out outResponseStream);
}));
responseMsg = outResponseMsg;
responseHeaders = outResponseHeaders;
responseStream = outResponseStream;
return returnValue;
} else {
return nextSink.ProcessMessage(sinkStack, requestMsg, requestHeaders, requestStream, out responseMsg, out responseHeaders, out responseStream);
}
}
System.Collections.IDictionary IChannelSinkBase.Properties {
get {
return this.Properties;
}
}
}
}

37
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTAServerChannelSinkProvider.cs

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting.Channels;
using System.Collections;
namespace CustomSinks
{
class InvokeOnSTAServerChannelSinkProvider: IServerChannelSinkProvider
{
private IServerChannelSinkProvider nextProvider;
public InvokeOnSTAServerChannelSinkProvider(IDictionary properties, ICollection providerData)
{
}
IServerChannelSink IServerChannelSinkProvider.CreateSink(IChannelReceiver channel)
{
IServerChannelSink nextSink = nextProvider.CreateSink(channel);
IServerChannelSink thisSink = new InvokeOnSTAServerChannelSink(nextSink);
return thisSink;
}
void IServerChannelSinkProvider.GetChannelData(IChannelDataStore channelData)
{
}
IServerChannelSinkProvider IServerChannelSinkProvider.Next {
get {
return nextProvider;
}
set {
nextProvider = value;
}
}
}
}

33
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/InvokeOnSTASink/InvokeOnSTASink.csproj

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>InvokeOnSTASink</RootNamespace>
<AssemblyName>InvokeOnSTASink</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{068578FE-412A-48DC-B90C-B7D2B8593DB4}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<Reference Include="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</ItemGroup>
<ItemGroup>
<Compile Include="InvokeOnSTAClientChannelSink.cs" />
<Compile Include="InvokeOnSTAClientChannelSinkProvider.cs" />
<Compile Include="InvokeOnSTAServerChannelSink.cs" />
<Compile Include="InvokeOnSTAServerChannelSinkProvider.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>

71
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/EventForwarder.cs

@ -0,0 +1,71 @@ @@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace CustomSinks
{
public class EventForwarder:MarshalByRefObject
{
Delegate realEvent;
public EventForwarder(Delegate realEvent)
{
this.realEvent = realEvent;
}
public void ForwardEvent0()
{
realEvent.DynamicInvoke(new object[] {});
}
public void ForwardEvent1(object p1)
{
realEvent.DynamicInvoke(new object[] { p1});
}
public void ForwardEvent2(object p1, object p2)
{
realEvent.DynamicInvoke(new object[] { p1, p2});
}
public void ForwardEvent3(object p1, object p2, object p3)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3});
}
public void ForwardEvent4(object p1, object p2, object p3, object p4)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3, p4});
}
public void ForwardEvent5(object p1, object p2, object p3, object p4, object p5)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3, p4, p5});
}
public void ForwardEvent6(object p1, object p2, object p3, object p4, object p5, object p6)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3, p4, p5, p6});
}
public void ForwardEvent7(object p1, object p2, object p3, object p4, object p5, object p6, object p7)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3, p4, p5, p6, p7});
}
public void ForwardEvent8(object p1, object p2, object p3, object p4, object p5, object p6, object p7, object p8)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3, p4, p5, p6, p7, p8});
}
public void ForwardEvent9(object p1, object p2, object p3, object p4, object p5, object p6, object p7, object p8, object p9)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3, p4, p5, p6, p7, p8, p9});
}
public void ForwardEvent10(object p1, object p2, object p3, object p4, object p5, object p6, object p7, object p8, object p9, object p10)
{
realEvent.DynamicInvoke(new object[] { p1, p2, p3, p4, p5, p6, p7, p8, p9, p10});
}
}
}

87
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/PrivateEventHandlersClientChannelSink.cs

@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting.Channels;
using System.Windows.Forms;
using System.Runtime.Remoting.Messaging;
using System.IO;
using System.Threading;
using System.Reflection;
namespace CustomSinks
{
class PrivateEventHandlersClientChannelSink : BaseChannelSinkWithProperties, IClientFormatterSink
{
IClientFormatterSink nextSink;
public PrivateEventHandlersClientChannelSink(IClientFormatterSink nextSink)
{
this.nextSink = nextSink;
}
// IClientChannelSink Members
void IClientChannelSink.AsyncProcessRequest(IClientChannelSinkStack sinkStack, IMessage msg, ITransportHeaders headers, Stream stream)
{
nextSink.AsyncProcessRequest(sinkStack, msg, headers, stream);
}
void IClientChannelSink.AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack, object state, ITransportHeaders headers, Stream stream)
{
nextSink.AsyncProcessResponse(sinkStack, state, headers, stream);
}
Stream IClientChannelSink.GetRequestStream(IMessage msg, ITransportHeaders headers)
{
return nextSink.GetRequestStream(msg, headers);
}
IClientChannelSink IClientChannelSink.NextChannelSink {
get {
return nextSink;
}
}
void IClientChannelSink.ProcessMessage(IMessage msg, ITransportHeaders requestHeaders, Stream requestStream, out ITransportHeaders responseHeaders, out Stream responseStream)
{
nextSink.ProcessMessage(msg, requestHeaders, requestStream, out responseHeaders, out responseStream);
}
// IMessageSink Members
IMessageCtrl IMessageSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
{
return nextSink.AsyncProcessMessage(msg, replySink);
}
IMessageSink IMessageSink.NextSink {
get {
return nextSink;
}
}
IMessage IMessageSink.SyncProcessMessage(IMessage msg)
{
MethodCall methodCall = new MethodCall(msg);
if (methodCall.ArgCount > 0 && methodCall.Args[0] is Delegate) {
Delegate realDelegate = methodCall.Args[0] as Delegate;
Type type = realDelegate.GetType();
EventForwarder eventForwarder = new EventForwarder(realDelegate);
MethodInfo proxyMethod = typeof(EventForwarder).GetMethod("ForwardEvent" + realDelegate.Method.GetParameters().Length);
Delegate proxyDelegate = Delegate.CreateDelegate(type, eventForwarder, proxyMethod);
methodCall.Args[0] = proxyDelegate;
}
return nextSink.SyncProcessMessage(methodCall);
}
// IChannelSinkBase Members
System.Collections.IDictionary IChannelSinkBase.Properties {
get {
return this.Properties;
}
}
}
}

33
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/PrivateEventHandlersClientChannelSinkProvider.cs

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting.Channels;
using System.Collections;
namespace CustomSinks
{
class PrivateEventHandlersClientChannelSinkProvider: IClientChannelSinkProvider
{
private IClientChannelSinkProvider nextProvider;
public PrivateEventHandlersClientChannelSinkProvider(IDictionary properties, ICollection providerData)
{
}
IClientChannelSink IClientChannelSinkProvider.CreateSink(IChannelSender channel, string url, object remoteChannelData)
{
IClientChannelSink nextSink = nextProvider.CreateSink(channel, url, remoteChannelData);
IClientChannelSink thisSink = new PrivateEventHandlersClientChannelSink(nextSink as IClientFormatterSink);
return thisSink;
}
IClientChannelSinkProvider IClientChannelSinkProvider.Next {
get {
return nextProvider;
}
set {
nextProvider = value;
}
}
}
}

31
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/PrivateEventHandlersSink/PrivateEventHandlersSink.csproj

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>PrivateEventHandlersSink</RootNamespace>
<AssemblyName>PrivateEventHandlersSink</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{6AF77F6A-775A-45DF-97B8-AAD76CD4023B}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</ItemGroup>
<ItemGroup>
<Compile Include="EventForwarder.cs" />
<Compile Include="PrivateEventHandlersClientChannelSink.cs" />
<Compile Include="PrivateEventHandlersClientChannelSinkProvider.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>

14
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/RemotingSinks.sln

@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InvokeOnSTASink", "InvokeOnSTASink\InvokeOnSTASink.csproj", "{068578FE-412A-48DC-B90C-B7D2B8593DB4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PrivateEventHandlersSink", "PrivateEventHandlersSink\PrivateEventHandlersSink.csproj", "{6AF77F6A-775A-45DF-97B8-AAD76CD4023B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestClient", "TestClient\TestClient.csproj", "{2DDD7699-76DC-492D-85A6-BB3B5CBB5FC3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestCommonTypes", "TestCommonTypes\TestCommonTypes.csproj", "{C2A2838E-E87F-47C3-9440-556875E1BB5E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestServer", "TestServer\TestServer.csproj", "{1EE49A1D-7098-4B75-B174-B36C803EA9EB}"
EndProject
Global
EndGlobal

29
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/Client.exe.config

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown
url="http://localhost:8686/ChatServer.rem"
type="CustomSinks.ChatServer, TestCommonTypes"
/>
</client>
<channels>
<channel ref="http" port="0">
<clientProviders>
<provider type="CustomSinks.PrivateEventHandlersClientChannelSinkProvider, PrivateEventHandlersSink"
customSinkType="CustomSinks.PrivateEventHandlersClientChannelSink, PrivateEventHandlersSink" />
<provider type="CustomSinks.InvokeOnSTAClientChannelSinkProvider, InvokeOnSTASink"
customSinkType="CustomSinks.InvokeOnSTAClientChannelSink, InvokeOnSTASink" />
<formatter ref="soap" typeFilterLevel="Full"/>
</clientProviders>
<serverProviders>
<formatter ref="soap" typeFilterLevel="Full"/>
<provider type="CustomSinks.InvokeOnSTAServerChannelSinkProvider, InvokeOnSTASink"
customSinkType="CustomSinks.InvokeOnSTAServerChannelSink, InvokeOnSTASink" />
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>

88
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/FormClient.Designer.cs generated

@ -0,0 +1,88 @@ @@ -0,0 +1,88 @@
namespace CustomSinks
{
partial class FormClient
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.buttonSend = new System.Windows.Forms.Button();
this.textBoxInput = new System.Windows.Forms.TextBox();
this.richTextBoxChat = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// buttonSend
//
this.buttonSend.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonSend.Location = new System.Drawing.Point(184, 158);
this.buttonSend.Name = "buttonSend";
this.buttonSend.Size = new System.Drawing.Size(75, 23);
this.buttonSend.TabIndex = 0;
this.buttonSend.Text = "Send";
this.buttonSend.Click += new System.EventHandler(this.buttonSend_Click);
//
// textBoxInput
//
this.textBoxInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxInput.Location = new System.Drawing.Point(2, 158);
this.textBoxInput.Name = "textBoxInput";
this.textBoxInput.Size = new System.Drawing.Size(176, 26);
this.textBoxInput.TabIndex = 1;
//
// richTextBoxChat
//
this.richTextBoxChat.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.richTextBoxChat.Location = new System.Drawing.Point(2, 2);
this.richTextBoxChat.Name = "richTextBoxChat";
this.richTextBoxChat.Size = new System.Drawing.Size(257, 150);
this.richTextBoxChat.TabIndex = 2;
this.richTextBoxChat.Text = "";
//
// FormClient
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(262, 188);
this.Controls.Add(this.richTextBoxChat);
this.Controls.Add(this.textBoxInput);
this.Controls.Add(this.buttonSend);
this.Name = "FormClient";
this.Text = "Client";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button buttonSend;
private System.Windows.Forms.TextBox textBoxInput;
private System.Windows.Forms.RichTextBox richTextBoxChat;
}
}

32
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/FormClient.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Remoting;
namespace CustomSinks
{
public partial class FormClient : Form
{
ChatServer chatServer;
public FormClient()
{
InitializeComponent();
RemotingConfiguration.Configure("Client.exe.config");
chatServer = new ChatServer();
chatServer.NewMessage +=
delegate(object sender, TextMessageEventArgs args)
{
richTextBoxChat.AppendText(args.Message + "\r\n");
};
}
private void buttonSend_Click(object sender, EventArgs e)
{
chatServer.SendMessage(textBoxInput.Text);
}
}
}

23
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/Program.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.Remoting;
using System.Threading;
namespace CustomSinks
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Thread.CurrentThread.Name = "Client (STA)";
Application.EnableVisualStyles();
Application.Run(new FormClient());
}
}
}

53
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestClient/TestClient.csproj

@ -0,0 +1,53 @@ @@ -0,0 +1,53 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<RootNamespace>TestClient</RootNamespace>
<AssemblyName>TestClient</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2DDD7699-76DC-492D-85A6-BB3B5CBB5FC3}</ProjectGuid>
<StartupObject />
<ApplicationIcon />
<Win32Resource />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<Reference Include="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<Reference Include="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</ItemGroup>
<ItemGroup>
<Compile Include="FormClient.cs" />
<Compile Include="FormClient.Designer.cs" />
<Compile Include="Program.cs" />
<None Include="Client.exe.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\TestCommonTypes\TestCommonTypes.csproj">
<Project>{C2A2838E-E87F-47C3-9440-556875E1BB5E}</Project>
<Name>TestCommonTypes</Name>
</ProjectReference>
<ProjectReference Include="..\PrivateEventHandlersSink\PrivateEventHandlersSink.csproj">
<Project>{6AF77F6A-775A-45DF-97B8-AAD76CD4023B}</Project>
<Name>PrivateEventHandlersSink</Name>
</ProjectReference>
<ProjectReference Include="..\InvokeOnSTASink\InvokeOnSTASink.csproj">
<Project>{068578FE-412A-48DC-B90C-B7D2B8593DB4}</Project>
<Name>InvokeOnSTASink</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>

19
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestCommonTypes/ChatServer.cs

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace CustomSinks
{
public class ChatServer: MarshalByRefObject
{
public event TextMessageEventHandler NewMessage;
public void SendMessage(string message)
{
Console.WriteLine("Message received:" + message);
if (NewMessage != null) {
NewMessage(this, new TextMessageEventArgs(message));
}
}
}
}

29
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestCommonTypes/TestCommonTypes.csproj

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>TestCommonTypes</RootNamespace>
<AssemblyName>TestCommonTypes</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C2A2838E-E87F-47C3-9440-556875E1BB5E}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ChatServer.cs" />
<Compile Include="TextMessageEventArgs.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>

25
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestCommonTypes/TextMessageEventArgs.cs

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace CustomSinks
{
public delegate void TextMessageEventHandler (object sender, TextMessageEventArgs args);
[Serializable]
public class TextMessageEventArgs : EventArgs
{
string message;
public TextMessageEventArgs(string message)
{
this.message = message;
}
public string Message {
get {
return message;
}
}
}
}

24
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestServer/Program.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Runtime.Remoting;
using System.Threading;
namespace CustomSinks
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Thread.CurrentThread.Name = "Server (STA)";
RemotingConfiguration.Configure("Server.exe.config");
Console.WriteLine("Chat server started. Press ENTER to exit.");
Console.ReadLine();
}
}
}

30
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestServer/Server.exe.config

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown
mode="Singleton"
type="CustomSinks.ChatServer, TestCommonTypes"
objectUri="ChatServer.rem"
/>
</service>
<channels>
<channel ref="http" port="8686">
<clientProviders>
<provider type="CustomSinks.PrivateEventHandlersClientChannelSinkProvider, PrivateEventHandlersSink"
customSinkType="CustomSinks.PrivateEventHandlersClientChannelSink, PrivateEventHandlersSink" />
<provider type="CustomSinks.InvokeOnSTAClientChannelSinkProvider, InvokeOnSTASink"
customSinkType="CustomSinks.InvokeOnSTAClientChannelSink, InvokeOnSTASink" />
<formatter ref="soap" typeFilterLevel="Full"/>
</clientProviders>
<serverProviders>
<formatter ref="soap" typeFilterLevel="Full"/>
<provider type="CustomSinks.InvokeOnSTAServerChannelSinkProvider, InvokeOnSTASink"
customSinkType="CustomSinks.InvokeOnSTAServerChannelSink, InvokeOnSTASink" />
</serverProviders>
</channel>
</channels>
</application>
</system.runtime.remoting>
</configuration>

46
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/RemotingSinks/TestServer/TestServer.csproj

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>TestServer</RootNamespace>
<AssemblyName>TestServer</AssemblyName>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1EE49A1D-7098-4B75-B174-B36C803EA9EB}</ProjectGuid>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
<Reference Include="System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<None Include="Server.exe.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\TestCommonTypes\TestCommonTypes.csproj">
<Project>{C2A2838E-E87F-47C3-9440-556875E1BB5E}</Project>
<Name>TestCommonTypes</Name>
</ProjectReference>
<ProjectReference Include="..\PrivateEventHandlersSink\PrivateEventHandlersSink.csproj">
<Project>{6AF77F6A-775A-45DF-97B8-AAD76CD4023B}</Project>
<Name>PrivateEventHandlersSink</Name>
</ProjectReference>
<ProjectReference Include="..\InvokeOnSTASink\InvokeOnSTASink.csproj">
<Project>{068578FE-412A-48DC-B90C-B7D2B8593DB4}</Project>
<Name>InvokeOnSTASink</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
</Project>
Loading…
Cancel
Save