IServerChannelSink インターフェイスとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > 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 名前空間



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

辞書ショートカット

すべての辞書の索引

「IServerChannelSink インターフェイス」の関連用語

IServerChannelSink インターフェイスのお隣キーワード
検索ランキング

   

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



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

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

©2025 GRAS Group, Inc.RSS