コード例 #1
0
 public ValueTask <OutgoingResponseFrame> DispatchAsync(IncomingRequestFrame request, Current current)
 {
     var ae            = new AlsoEmpty();
     var responseFrame =
         OutgoingResponseFrame.WithReturnValue(current,
                                               compress: false,
                                               format: default,
コード例 #2
0
        public ValueTask <OutgoingResponseFrame> DispatchAsync(IncomingRequestFrame request, Current current)
        {
            var ae            = new Test.AlsoEmpty();
            var responseFrame = OutgoingResponseFrame.WithReturnValue(current, format: null,
                                                                      ae, (OutputStream ostr, Test.AlsoEmpty ae) => ostr.WriteClass(ae));

            return(new ValueTask <OutgoingResponseFrame>(responseFrame));
        }
コード例 #3
0
 public async ValueTask <OutputStream> DispatchAsync(Ice.InputStream istr, Current current)
 {
     if (current.Operation.Equals("opOneway"))
     {
         if (!current.IsOneway)
         {
             // If called two-way, return exception to caller.
             throw new Test.MyException();
         }
         return(OutgoingResponseFrame.Empty(current));
     }
     else if (current.Operation.Equals("opString"))
     {
         string s             = istr.ReadString();
         var    responseFrame = new OutgoingResponseFrame(current);
         responseFrame.StartReturnValue();
         responseFrame.WriteString(s);
         responseFrame.WriteString(s);
         responseFrame.EndReturnValue();
         return(responseFrame);
     }
     else if (current.Operation.Equals("opException"))
     {
         if (current.Context.ContainsKey("raise"))
         {
             throw new Test.MyException();
         }
         var ex = new Test.MyException();
         return(new OutgoingResponseFrame(current, ex));
     }
     else if (current.Operation.Equals("shutdown"))
     {
         current.Adapter.Communicator.Shutdown();
         return(OutgoingResponseFrame.Empty(current));
     }
     else if (current.Operation.Equals("ice_isA"))
     {
         string s             = istr.ReadString();
         var    responseFrame = new OutgoingResponseFrame(current);
         responseFrame.StartReturnValue();
         if (s.Equals("::Test::MyClass"))
         {
             responseFrame.WriteBool(true);
         }
         else
         {
             responseFrame.WriteBool(false);
         }
         responseFrame.EndReturnValue();
         return(responseFrame);
     }
     else
     {
         throw new OperationNotExistException(current.Id, current.Facet, current.Operation);
     }
 }
コード例 #4
0
        public ValueTask <OutputStream> DispatchAsync(InputStream istr, Current current)
        {
            var ae            = new Test.AlsoEmpty();
            var responseFrame = new OutgoingResponseFrame(current);

            responseFrame.StartReturnValue();
            responseFrame.WriteClass(ae);
            responseFrame.EndReturnValue();
            return(new ValueTask <OutputStream>(responseFrame));
        }
コード例 #5
0
ファイル: BlobjectI.cs プロジェクト: keno1213/ice
 public ValueTask <OutgoingResponseFrame> DispatchAsync(IncomingRequestFrame request, Current current)
 {
     if (current.Operation.Equals("opOneway"))
     {
         if (!current.IsOneway)
         {
             // If called two-way, return exception to caller.
             throw new MyException();
         }
         return(new ValueTask <OutgoingResponseFrame>(OutgoingResponseFrame.WithVoidReturnValue(current)));
     }
     else if (current.Operation.Equals("opString"))
     {
         string s             = request.ReadArgs(current.Communicator, InputStream.IceReaderIntoString);
         var    responseFrame = OutgoingResponseFrame.WithReturnValue(current,
                                                                      compress: false,
                                                                      format: default,
コード例 #6
0
            public Task ActivateAsync(CancellationToken cancel)
            {
                _communicator.DefaultDispatchInterceptors =
                    _communicator.DefaultDispatchInterceptors.ToImmutableList().Add(
                        async(request, current, next, cancel) =>
                {
                    current.Context["DispatchPlugin"] = "1";
                    OutgoingResponseFrame response    = await next(request, current, cancel);
                    if (request.Protocol == Protocol.Ice2)
                    {
                        response.BinaryContextOverride.Add(100, ostr => ostr.WriteInt(100));
                    }
                    return(response);
                });

                return(Task.CompletedTask);
            }
コード例 #7
0
ファイル: BlobjectI.cs プロジェクト: bernardnormier/ice
 public ValueTask <OutgoingResponseFrame> DispatchAsync(IncomingRequestFrame request, Current current)
 {
     if (current.Operation.Equals("opOneway"))
     {
         if (!current.IsOneway)
         {
             // If called two-way, return exception to caller.
             throw new MyException();
         }
         return(new ValueTask <OutgoingResponseFrame>(OutgoingResponseFrame.WithVoidReturnValue(current)));
     }
     else if (current.Operation.Equals("opString"))
     {
         string s             = request.ReadParamList(current.Communicator, InputStream.IceReaderIntoString);
         var    responseFrame = OutgoingResponseFrame.WithReturnValue(current, format: null, (s, s),
                                                                      (OutputStream ostr, (string ReturnValue, string s2)value) =>
         {
             ostr.WriteString(value.ReturnValue);
             ostr.WriteString(value.s2);
         });