protected new PutRecordsResult InnerPutRecords(PutRecordsRequest putRecordsParam)
        {
            // Decorate PutRecordsRequest if needed
            putRecordsParam = DecorateRecords(putRecordsParam);

            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();

            OBS.Runtime.Internal.IRequest requestobs = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.POST.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new RecordResource(null))
                                  .Build();

            requestobs.ResourcePath = resourcePath;

            if (_disConfig.GetBodySerializeType().ToLower().Equals(BodySerializeType.Protobuf.ToString().ToLower()))
            {
                requestobs.Headers.Add("Content-Type", "application/x-protobuf; charset=utf-8");
                requestobs.Headers.Add("accept", "*/*");
                HuaweiCloud.DIS.Api.Protobuf.PutRecordsRequest protoRequest = ProtobufUtils.ToProtobufPutRecordsRequest(putRecordsParam);
                HuaweiCloud.DIS.Api.Protobuf.PutRecordsResult  protoResult  = Request <HuaweiCloud.DIS.Api.Protobuf.PutRecordsResult>(protoRequest.ToByteArray(), requestobs, InterfaceType.DISInterfacePutRecords);
                PutRecordsResult result = ProtobufUtils.ToPutRecordsResult(protoResult);
                return(result);
            }
            else
            {
                var results = Request <PutRecordsResult>(putRecordsParam, requestobs);
                return(results);
            }
        }
Пример #2
0
        /// <summary>
        /// Register Node by NodeId
        /// </summary>
        /// <param name="context">context</param>
        /// <param name="request">request</param>
        /// <returns>response</returns>
        public async Task <RouteRegistrationResponse> Register(IWorkContext context, RouteRegistrationRequest request)
        {
            request.Verify(nameof(request)).IsNotNull();
            request.NodeId.Verify(nameof(request.NodeId)).IsNotNull();

            Uri uri = new ResourcePathBuilder()
                      .SetScheme(ResourceScheme.Queue)
                      .SetServiceBusName("Default")
                      .SetEntityName(request.NodeId !)
                      .Build();

            INodeRegistrationActor registgrationActor = await _actorManager.CreateProxy <INodeRegistrationActor>(request.NodeId !);

            await registgrationActor.Set(context, request.ConvertTo(uri));

            QueueDefinition queueDefinition = new QueueDefinition
            {
                QueueName = request.NodeId,
            };

            IQueueManagementActor queueActor = await _actorManager.CreateProxy <IQueueManagementActor>(request.NodeId !);

            await queueActor.Set(context, queueDefinition);

            return(new RouteRegistrationResponse
            {
                InputQueueUri = uri.ToString(),
            });
        }
        /// <summary>
        /// 下载
        /// </summary>
        /// <param name="getRecordsParam"></param>
        /// <returns></returns>
        public new GetRecordsResult GetRecords(GetRecordsRequest getRecordsParam)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.GET.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new RecordResource(null))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            GetRecordsResult result = null;

            if (_disConfig.GetBodySerializeType().ToLower().Equals(BodySerializeType.Protobuf.ToString().ToLower()))
            {
                requestobs.Headers.Add("Content-Type", "application/x-protobuf; charset=utf-8");
                requestobs.Headers.Add("accept", "*/*");
                result = Request <GetRecordsResult>(getRecordsParam, requestobs, InterfaceType.DISInterfaceGetRecords);
            }
            else
            {
                result = Request <GetRecordsResult>(getRecordsParam, requestobs);
            }

            result = DecorateRecords(result);
            return(result);
        }
Пример #4
0
        /// <summary>
        /// 删除Checkpoint
        /// </summary>
        /// <param name="checkPointRequest"></param>
        /// <returns></returns>
        public ResponseResult DeleteCheckpoint(CheckPointRequest checkPointRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.DELETE.ToString()
            };

            var resourcePath = ResourcePathBuilder.Standard()
                               .WithProjectId(_disConfig.GetProjectId())
                               .WithResource(new CheckPointResource(null))
                               .Build();

            requestobs.ResourcePath = resourcePath;
            //requestobs.ResourcePath = resourcePath.TrimEnd('/') + "?stream_name=" + checkPointRequest.StreamName + "&app_name=" + checkPointRequest.AppName;

            //if (!string.IsNullOrEmpty(checkPointRequest.PartitionId))
            //{
            //    requestobs.ResourcePath += "&partition_id=" + checkPointRequest.PartitionId;
            //}

            //if (!string.IsNullOrEmpty(checkPointRequest.CheckpointType))
            //{
            //    requestobs.ResourcePath += "&checkpoint_type=" + checkPointRequest.CheckpointType;
            //}

            ResponseResult results = this.Request <ResponseResult>(checkPointRequest, requestobs);

            return(results);
        }
Пример #5
0
        public ResponseResult DeleteTransferTask(string streamName, string transferTaskName)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();

            OBS.Runtime.Internal.IRequest requestobs = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.DELETE.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new StreamResource(null, streamName))
                                  .WithResource(new TransferTaskResource(null, transferTaskName))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            ResponseResult results = null;

            try
            {
                results = Request <ResponseResult>(null, requestobs);
            }
            catch (Exception)
            {
                throw;
            }

            return(results);
        }
Пример #6
0
        public async Task GivenNode_WhenRegisterAndUnregistered_ShouldPass()
        {
            IContainer rootContainer = CreateContainer();

            using (ILifetimeScope container = rootContainer.BeginLifetimeScope())
            {
                _workContext = new WorkContextBuilder()
                               .Set(new ServiceProviderProxy(x => container.Resolve(x), x => container.ResolveOptional(x)))
                               .Build();

                RouteManager manager = container.Resolve <RouteManager>();

                const string nodeId = "Need/Customer";

                RouteRegistrationRequest request = new RouteRegistrationRequest {
                    NodeId = nodeId
                };

                RouteRegistrationResponse response = await manager.Register(_workContext, request);

                response.Should().NotBeNull();

                Uri uri = new ResourcePathBuilder()
                          .SetScheme(ResourceScheme.Queue)
                          .SetServiceBusName("Default")
                          .SetEntityName(nodeId)
                          .Build();

                response.InputQueueUri.Should().NotBeNullOrEmpty();
                response.InputQueueUri.Should().Be(uri.ToString());

                RouteLookupRequest routeLookupRequest = new RouteLookupRequest
                {
                    SearchNodeId = nodeId,
                };

                IReadOnlyList <RouteLookupResponse>?routeLookupResponses = await manager.Search(_workContext, routeLookupRequest);

                routeLookupResponses.Should().NotBeNull();
                routeLookupResponses.Count.Should().Be(1);
                routeLookupResponses[0].NodeId.Should().Be(nodeId);
                routeLookupResponses[0].InputUri.Should().Be(uri.ToString());

                await manager.Unregister(_workContext, request);

                routeLookupResponses = await manager.Search(_workContext, routeLookupRequest);

                routeLookupResponses.Should().NotBeNull();
                routeLookupResponses.Count.Should().Be(0);
            }
        }
Пример #7
0
        /// <summary>
        /// 删除通道
        /// </summary>
        /// <param name="describeStreamRequest"></param>
        /// <returns></returns>
        public ResponseResult DeleteStream(DescribeStreamRequest describeStreamRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.DELETE.ToString()
            };

            var resourcePath = ResourcePathBuilder.Standard()
                               .WithProjectId(_disConfig.GetProjectId())
                               .WithResource(new StreamResource(null, describeStreamRequest.StreamName))
                               .Build();

            requestobs.ResourcePath = resourcePath;
            ResponseResult results = this.Request <ResponseResult>(describeStreamRequest, requestobs);

            return(results);
        }
Пример #8
0
        public UpdateShardsResult UpdatePartition(UpdateShardsRequest updateShardsRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.PUT.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new StreamResource(null, updateShardsRequest.StreamName))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            var result = Request <UpdateShardsResult>(updateShardsRequest, requestobs);

            return(result);
        }
Пример #9
0
        /// <summary>
        /// 查询Checkpoint
        /// </summary>
        /// <param name="getCheckpointRequest"></param>
        /// <returns></returns>
        public GetCheckpointResult GetCheckpoint(GetCheckpointRequest getCheckpointRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.GET.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new CheckPointResource(null))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            var result = Request <GetCheckpointResult>(getCheckpointRequest, requestobs);

            return(result);
        }
Пример #10
0
        public DescribeAppListResult DescribeAppList(DescribeAppListRequest describeAppRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.GET.ToString()
            };

            var resourcePath = ResourcePathBuilder.Standard()
                               .WithProjectId(_disConfig.GetProjectId())
                               .WithResource(new AppResource(null))
                               .Build();

            requestobs.ResourcePath = resourcePath;
            var results = this.Request <DescribeAppListResult>(describeAppRequest, requestobs);

            return(results);
        }
Пример #11
0
        public ResponseResult CreateTransferTask(string streamName, AddTransferTasksRequest addTransferTasksRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.POST.ToString()
            };

            var resourcePath = ResourcePathBuilder.Standard()
                               .WithProjectId(_disConfig.GetProjectId())
                               .WithResource(new StreamResource(null, streamName))
                               .WithResource(new TransferTaskResource(null))
                               .Build();

            requestobs.ResourcePath = resourcePath;
            var results = this.Request <ResponseResult>(addTransferTasksRequest, requestobs);

            return(results);
        }
Пример #12
0
        /// <summary>
        /// Unregistered route
        /// </summary>
        /// <param name="context">context</param>
        /// <param name="nodeId">node id</param>
        /// <returns>task</returns>
        public async Task Unregister(IWorkContext context, RouteRegistrationRequest routeRegistrationRequest)
        {
            routeRegistrationRequest.Verify(nameof(routeRegistrationRequest)).IsNotNull();
            routeRegistrationRequest.NodeId.Verify(nameof(routeRegistrationRequest.NodeId)).IsNotNull();

            Uri uri = new ResourcePathBuilder()
                      .SetScheme(ResourceScheme.Queue)
                      .SetServiceBusName("Default")
                      .SetEntityName(routeRegistrationRequest.NodeId !)
                      .Build();

            INodeRegistrationActor subject = await _actorManager.CreateProxy <INodeRegistrationActor>(routeRegistrationRequest.NodeId !);

            await subject.Remove(context);

            IQueueManagementActor queueActor = await _actorManager.CreateProxy <IQueueManagementActor>(routeRegistrationRequest.NodeId !);

            await queueActor.Remove(context);
        }
Пример #13
0
        public GetStreamConsumingResult GetStreamConsumingInfo(string streamName, string appName, GetStreamConsumingRequest consumingRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.GET.ToString()
            };

            var resourcePath = ResourcePathBuilder.Standard()
                               .WithProjectId(_disConfig.GetProjectId())
                               .WithResource(new AppResource(null, appName))
                               .WithResource(new StreamResource(null, streamName))
                               .Build();

            requestobs.ResourcePath = resourcePath;
            var results = this.Request <GetStreamConsumingResult>(consumingRequest, requestobs);

            return(results);
        }
Пример #14
0
        //public ResponseResult CreateSchema(CreateSchemaRequest schemaRequest)
        //{
        //    ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
        //    IRequest requestobs = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
        //    {
        //        HttpMethod = HttpMethodName.POST.ToString()
        //    };

        //    var resourcePath = ResourcePathBuilder.Standard().WithVersion("v1")
        //        .WithProjectId(_disConfig.GetProjectId())
        //        .WithResource(new SchemaResource(null))
        //        .Build();
        //    requestobs.ResourcePath = resourcePath.Trim('/') + "?type=JSON";
        //    var results = this.Request<ResponseResult>(schemaRequest, requestobs);

        //    return results;
        //}

        public ResponseResult CreateApp(AppRequest getShardIteratorParam)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();

            OBS.Runtime.Internal.IRequest requestobs = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.POST.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new AppResource(null))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            var results = Request <ResponseResult>(getShardIteratorParam, requestobs);

            return(results);
        }
Пример #15
0
        public StreamTransferTaskDetailResult GetStreamTransferTaskDetail(string streamName, string transferTaskName)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.GET.ToString()
            };

            var resourcePath = ResourcePathBuilder.Standard()
                               .WithProjectId(_disConfig.GetProjectId())
                               .WithResource(new StreamResource(null, streamName))
                               .WithResource(new TransferTaskResource(null, transferTaskName))
                               .Build();

            requestobs.ResourcePath = resourcePath;
            var results = this.Request <StreamTransferTaskDetailResult>(null, requestobs);

            return(results);
        }
Пример #16
0
        private async Task <PutRecordsResult> InnerUploadFile(PutRecordsRequest putRecordsParam)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();

            OBS.Runtime.Internal.IRequest requestobs = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.POST.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new RecordResource(null))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            var results = await Request <PutRecordsResult>(putRecordsParam, requestobs);

            return(results);
        }
Пример #17
0
        public GetMetricResult GetPartitionMetricInfo(string streamName, string partitionId, GetPartitionMetricRequest metricRequest)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.GET.ToString()
            };

            var resourcePath = ResourcePathBuilder.Standard()
                               .WithProjectId(_disConfig.GetProjectId())
                               .WithResource(new StreamResource(null, streamName))
                               .WithResource(new PartitionResource(null, partitionId))
                               .WithResource(new MetricResource(null))
                               .Build();

            requestobs.ResourcePath = resourcePath;
            var results = this.Request <GetMetricResult>(metricRequest, requestobs);

            return(results);
        }
Пример #18
0
        /// <summary>
        /// 下载
        /// </summary>
        /// <param name="getRecordsParam"></param>
        /// <returns></returns>
        public GetRecordsResult GetRecords(GetRecordsRequest getRecordsParam)
        {
            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();
            IRequest             requestobs           = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.GET.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new RecordResource(null))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            GetRecordsResult result = null;

            result = Request <GetRecordsResult>(getRecordsParam, requestobs);

            result = DecorateRecords(result);
            return(result);
        }
Пример #19
0
        protected PutRecordsResult InnerPutRecords(PutRecordsRequest putRecordsParam)
        {
            // Decorate PutRecordsRequest if needed
            putRecordsParam = DecorateRecords(putRecordsParam);

            ObsWebServiceRequest obsWebServiceRequest = new DISWebServiceRequest();

            OBS.Runtime.Internal.IRequest requestobs = new DISDefaultRequest(obsWebServiceRequest, Constants.SERVICENAME)
            {
                HttpMethod = HttpMethodName.POST.ToString()
            };

            string resourcePath = ResourcePathBuilder.Standard()
                                  .WithProjectId(_disConfig.GetProjectId())
                                  .WithResource(new RecordResource(null))
                                  .Build();

            requestobs.ResourcePath = resourcePath;
            var results = Request <PutRecordsResult>(putRecordsParam, requestobs);

            return(results);
        }