IServerChannelSinkとは? わかりやすく解説

IServerChannelSink インターフェイス

セキュリティ シンクおよび転送シンクのために使用するメソッド提供します

名前空間: System.Runtime.Remoting.Channels
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public Interface IServerChannelSink
    Inherits IChannelSinkBase
Dim instance As IServerChannelSink
[ComVisibleAttribute(true)] 
public interface IServerChannelSink : IChannelSinkBase
[ComVisibleAttribute(true)] 
public interface class IServerChannelSink :
 IChannelSinkBase
/** @attribute ComVisibleAttribute(true) */ 
public interface IServerChannelSink extends IChannelSinkBase
ComVisibleAttribute(true) 
public interface IServerChannelSink extends
 IChannelSinkBase
解説解説
使用例使用例

IServerChannelSink インターフェイス実装を示すコード例次に示します

using System;
using System.Collections;
using System.IO;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Messaging;
using System.Security.Permissions;

public class ServerSink : BaseChannelSinkWithProperties,
 IServerChannelSink
{

    // This class inherits from BaseChannelSinkWithPropertes
    // to get an implementation of IChannelSinkBase.


    // The next sink in the chain.
    private IServerChannelSink nextSink;

    public IServerChannelSink NextChannelSink
    {
        [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
        get
        {
            return(nextSink);
        }
    }

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
    public Stream GetResponseStream (IServerResponseChannelSinkStack
 sinkStack,
                                     Object state,
                                     IMessage message,
                                     ITransportHeaders responseHeaders)
    {
        return(null);
    }

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
    public ServerProcessing ProcessMessage (IServerChannelSinkStack
 sinkStack,
                                            IMessage requestMessage,
                                            ITransportHeaders requestHeaders,
                                            Stream requestStream,
                                            out IMessage responseMessage,
                                            out ITransportHeaders responseHeaders
,
                                            out Stream responseStream)
    {

        // Hand off to the next sink for processing.
        sinkStack.Push(this, null);
        ServerProcessing status = nextSink.ProcessMessage(
          sinkStack, requestMessage, requestHeaders, requestStream,
          out responseMessage, out responseHeaders, out responseStream
        );

        // Print the response message properties.
        Console.WriteLine("---- Message from the server ----");
        IDictionary dictionary = responseMessage.Properties;
        foreach (Object key in dictionary.Keys)
        {
            Console.WriteLine("{0} = {1}", key, dictionary[key]);
        }
        Console.WriteLine("---------------------------------");

        return(status);
    } 

    [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
    public void AsyncProcessResponse (IServerResponseChannelSinkStack
 sinkStack,
                                      Object state,
                                      IMessage message,
                                      ITransportHeaders responseHeaders,
                                      Stream responseStream)
    {
        throw new NotImplementedException();
    }

    // Constructor
    [SecurityPermission(SecurityAction.LinkDemand)]
    public ServerSink (IServerChannelSink sink) {
      if (sink == null) throw new
 ArgumentNullException("sink");
      nextSink = sink;
    }


}
using namespace System::Runtime::InteropServices;
using namespace System;
using namespace System::Collections;
using namespace System::IO;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Messaging;

[System::Security::Permissions::PermissionSet(System::Security::
   Permissions::SecurityAction::Demand, Name = "FullTrust")]
public ref class ServerSink: public
 BaseChannelSinkWithProperties, public IServerChannelSink
{
private:

   // This class inherits from BaseChannelSinkWithPropertes
   // to get an implementation of IChannelSinkBase.
   // The next sink in the chain.
   IServerChannelSink^ nextSink;

public:
   property IServerChannelSink^ NextChannelSink 
   {
      virtual IServerChannelSink^ get()
      {
         return (nextSink);
      }
   }

   virtual Stream^ GetResponseStream( IServerResponseChannelSinkStack^ /*sinkStack*/,
 Object^ /*state*/, IMessage^ /*message*/, ITransportHeaders^ /*responseHeaders*/
 )
   {
      return nullptr;
   }

   virtual ServerProcessing ProcessMessage( IServerChannelSinkStack^ sinkStack, IMessage^
 requestMessage, ITransportHeaders^ requestHeaders, Stream^ requestStream, [Out]IMessage^%
 responseMessage, [Out]ITransportHeaders^% responseHeaders, [Out]Stream^% responseStream )
   {
      // Hand off to the next sink for processing.
      sinkStack->Push( this, nullptr );
      ServerProcessing status = nextSink->ProcessMessage( sinkStack, requestMessage,
 requestHeaders, requestStream, responseMessage, responseHeaders, responseStream
 );

      // Print the response message properties.
      Console::WriteLine( "---- Message from the server ----" );
      IDictionary^ dictionary = ( *responseMessage).Properties;
      IEnumerator^ myEnum = dictionary->Keys->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Object^ key = safe_cast<Object^>(myEnum->Current);
         Console::WriteLine( "{0} = {1}", key, dictionary[ key ] );
      }

      Console::WriteLine( "---------------------------------" );
      return (status);
   }

   virtual void AsyncProcessResponse( IServerResponseChannelSinkStack^
 /*sinkStack*/, Object^ /*state*/, IMessage^ /*message*/, ITransportHeaders^ /*responseHeaders*/,
 Stream^ /*responseStream*/ )
   {
      throw gcnew NotImplementedException;
   }

   property System::Collections::IDictionary^ Properties 
   {
      virtual System::Collections::IDictionary^ get() override
      {
         return (dynamic_cast<BaseChannelSinkWithProperties^>(this))->Properties;
      }
   }

   // Constructor
   ServerSink( IServerChannelSink^ sink )
   {
      if ( sink == nullptr )
            throw gcnew ArgumentNullException( "sink" );

      nextSink = sink;
   }
};
import System.*;
import System.Collections.*;
import System.IO.*;
import System.Runtime.Remoting.Channels.*;
import System.Runtime.Remoting.Messaging.*;
import System.Security.Permissions.*;

/** @attribute SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)
*/
public class ServerSink extends BaseChannelSinkWithProperties
 
    implements IServerChannelSink
{
    // This class inherits from BaseChannelSinkWithPropertes
    // to get an implementation of IChannelSinkBase.
    // The next sink in the chain.
    private IServerChannelSink nextSink;

    /** @property 
     */
    public IServerChannelSink get_NextChannelSink()
    {
        return nextSink;
    } //get_NextChannelSink

    public Stream GetResponseStream(IServerResponseChannelSinkStack
 sinkStack, 
        Object state, IMessage message, ITransportHeaders responseHeaders)
    {
        return null;
    } //GetResponseStream

    public ServerProcessing ProcessMessage(IServerChannelSinkStack
 sinkStack, 
        IMessage requestMessage, ITransportHeaders requestHeaders,
        Stream requestStream,/** @ref */ IMessage responseMessage, 
        /** @ref */ ITransportHeaders responseHeaders,
        /** @ref */ Stream responseStream)
    {
        // Hand off to the next sink for processing.
        sinkStack.Push(this, null);
        ServerProcessing status = nextSink.ProcessMessage(sinkStack, 
            requestMessage, requestHeaders, requestStream,responseMessage, 
            responseHeaders, responseStream);
        // Print the response message properties.
        Console.WriteLine("---- Message from the server ----");
        IDictionary dictionary = responseMessage.get_Properties();
        Object key = null;
        IEnumerator objEnum = dictionary.get_Keys().GetEnumerator();
        while (objEnum.MoveNext()) {
            key = objEnum.get_Current();
            System.Console.WriteLine("{0} = {1}", key, dictionary.get_Item(key));
        }
        System.Console.WriteLine("---------------------------------");
        return status;
    } //ProcessMessage

    public void AsyncProcessResponse(IServerResponseChannelSinkStack
 sinkStack,
        Object state, IMessage message, ITransportHeaders responseHeaders, 
        Stream responseStream) throws NotImplementedException
    {
        throw new NotImplementedException();
    } //AsyncProcessResponse

    // Constructor
    public ServerSink(IServerChannelSink sink)
    {
        if (sink == null) {
            throw new ArgumentNullException("sink");
        }
        nextSink = sink;
    } //ServerSink
} //ServerSink

対応するサーバー シンク プロバイダ実装例については、IServerChannelSinkProvider インターフェイスドキュメント参照してください

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IServerChannelSink メンバ
System.Runtime.Remoting.Channels 名前空間

IServerChannelSink プロパティ


IServerChannelSink メソッド


パブリック メソッドパブリック メソッド

  名前 説明
パブリック メソッド AsyncProcessResponse 非同期送信されメソッド呼び出し対す応答については、現在のシンクから処理を行うように要求します
パブリック メソッド GetResponseStream 指定した応答メッセージシリアル化される対象Stream返します
パブリック メソッド ProcessMessage 現在のシンクからのメッセージ処理を要求します
参照参照

関連項目

IServerChannelSink インターフェイス
System.Runtime.Remoting.Channels 名前空間

IServerChannelSink メンバ




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IServerChannelSink」の関連用語

IServerChannelSinkのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IServerChannelSinkのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS