Beispiel #1
0
 private void OnGetRanges(object sender, ListRequestEventArgs <v12.Protocol.ChannelSubscribe.GetRanges, v12.Datatypes.ChannelData.DataItem> args)
 {
     Store.ExecuteWithLock(() =>
     {
         OnGetRangesCore(sender, args);
     });
 }
Beispiel #2
0
 private void OnGetResources(object sender, ListRequestEventArgs <v11.Protocol.Discovery.GetResources, v11.Datatypes.Object.Resource> args)
 {
     Store.ExecuteWithLock(() =>
     {
         OnGetResourcesCore(sender, args);
     });
 }
Beispiel #3
0
 private void OnGetSupportedTypes(object sender, ListRequestEventArgs <v12.Protocol.SupportedTypes.GetSupportedTypes, v12.Datatypes.Object.SupportedType> args)
 {
     Store.ExecuteWithLock(() =>
     {
         OnGetSupportedTypesCore(sender, args);
     });
 }
Beispiel #4
0
        private void OnChannelRangeRequestCore(object sender, ListRequestEventArgs <v11.Protocol.ChannelStreaming.ChannelRangeRequest, v11.Datatypes.ChannelData.DataItem> args)
        {
            var handler   = (v11.Protocol.ChannelStreaming.IChannelStreamingProducer)sender;
            var sessionId = GetSessionId(handler);

            if (handler.Capabilities.SimpleStreamer ?? false)
            {
                args.FinalError = handler.ErrorInfo().RequestDenied();
                return;
            }
            if (!Store.HasChannelSubscription(sessionId))
            {
                args.FinalError = handler.ErrorInfo().InvalidState("Start must be sent before ChannelRangeRequest.");
            }
            HashSet <long> startedChannels, stoppedChannels, closedChannels, invalidChannels;

            if (!Store.ValidateChannelIds(sessionId, args.Request.Body.ChannelRanges.SelectMany(cr => cr.ChannelId), out startedChannels, out stoppedChannels, out closedChannels, out invalidChannels))
            {
                args.FinalError = handler.ErrorInfo().RequestDenied();
                return;
            }
            foreach (var invalidId in invalidChannels.Concat(closedChannels))
            {
                args.ErrorMap[invalidId.ToString()] = handler.ErrorInfo().InvalidState($"Channel {invalidId} is not available.");
            }
            if (args.ErrorMap.Count > 0)
            {
                return;
            }

            var queries = args.Request.Body.ChannelRanges.SelectMany(cr => cr.ChannelId.Select(id => new MockRangeQuery(cr, id)));

            args.Responses = Store.GetChannelDataRanges(sessionId, queries)
                             .Select(di => di.DataItem11).ToList();
        }
Beispiel #5
0
 private void OnChannelRangeRequest(object sender, ListRequestEventArgs <v11.Protocol.ChannelStreaming.ChannelRangeRequest, v11.Datatypes.ChannelData.DataItem> args)
 {
     Store.ExecuteWithLock(() =>
     {
         OnChannelRangeRequestCore(sender, args);
     });
 }
Beispiel #6
0
 private void OnChannelDescribe(object sender, ListRequestEventArgs <v11.Protocol.ChannelStreaming.ChannelDescribe, v11.Datatypes.ChannelData.ChannelMetadataRecord> args)
 {
     Store.ExecuteWithLock(() =>
     {
         OnChannelDescribeCore(sender, args);
     });
 }
        private void queryPanel_ListRequest(object sender, ListRequestEventArgs e)
        {
            string listName = e.ListName;

            if (listName == "SQL")
            {
                GetSqlList(e.SQL, e.ListItems);
            }
            else if (listName == "RegionList")
            {
                e.ListItems.Clear();
                e.ListItems.Add("British Columbia", "BC");
                e.ListItems.Add("Colorado", "CO");
                e.ListItems.Add("Oregon", "OR");
                e.ListItems.Add("Washington", "WA");
            }
        }
Beispiel #8
0
        protected override void HandleGetResources(ListRequestEventArgs <GetResources, Resource> args)
        {
            var witsml20 = new EtpUri("eml://witsml20");

            if (args.Request.Body.Uri == EtpUri.RootUri11)
            {
                args.Responses.Add(new Resource
                {
                    Uuid                = null,
                    Uri                 = witsml20,
                    Name                = "WITSML Store (2.0)",
                    HasChildren         = 1,
                    ContentType         = witsml20.ContentType,
                    ResourceType        = ResourceTypes.UriProtocol.ToString(),
                    CustomData          = new Dictionary <string, string>(),
                    LastChanged         = AvroConverter.UtcMinDateTime,
                    ChannelSubscribable = false,
                    ObjectNotifiable    = false,
                });
            }
            else if (args.Request.Body.Uri == witsml20)
            {
                var witsml20well = new EtpUri("eml://witsml20/well");
                args.Responses.Add(new Resource
                {
                    Uuid                = null,
                    Uri                 = witsml20well,
                    Name                = "Well",
                    HasChildren         = 0,
                    ContentType         = witsml20well.ContentType,
                    ResourceType        = ResourceTypes.Folder.ToString(),
                    CustomData          = new Dictionary <string, string>(),
                    LastChanged         = AvroConverter.UtcMinDateTime,
                    ChannelSubscribable = false,
                    ObjectNotifiable    = false,
                });
            }
            else
            {
                args.FinalError = ErrorInfo().NotSupported();
            }
        }
Beispiel #9
0
        private void OnGetDeletedResourcesCore(object sender, ListRequestEventArgs <v12.Protocol.Discovery.GetDeletedResources, v12.Datatypes.Object.DeletedResource> args)
        {
            var handler   = (v12.Protocol.Discovery.IDiscoveryStore)sender;
            var resources = Enumerable.Empty <v12.Datatypes.Object.DeletedResource>();

            var uri = new EtpUri(args.Request.Body.DataspaceUri);

            if (!uri.IsEtp12 || !uri.IsDataspaceUri)
            {
                args.FinalError = handler.ErrorInfo().InvalidUri(uri);
            }
            else
            {
                resources = Store.GetDeletedObjects(EtpVersion.v12, uri, objectTypes: args.Request.Body.DataObjectTypes.ToDataObjectTypes(), deleteTimeFilter: args.Request.Body.DeleteTimeFilter)
                            .Where(o => handler.Session.SessionSupportedDataObjects.IsSupported(o.DataObjectType))
                            .Select(@do => @do.DeletedResource12);
            }

            args.Responses.AddRange(resources);
        }
        private void QPanel_ListRequest(object sender, ListRequestEventArgs e)
        {
            if (e.ListName == "SQL")
            {
                CheckConnection();

                var     sql    = e.Data.ToString();
                DataSet tempDS = new DataSet();

                var tempDA = new SqlDataAdapter(sql, _connection);
                tempDA.Fill(tempDS, "Temp");

                var strWriter = new StringWriter();
                tempDS.WriteXml(strWriter);
                e.ResultXml = strWriter.ToString();

                //e.ListItems.Clear();
                //foreach (DataRow row in tempDS.Tables[0].Rows) {
                //    e.ListItems.Add(row[1].ToString(), row[0].ToString());
                //}
            }
            else if (e.ListName == "RegionList")
            {
                e.ListItems.Clear();
                string country = EqManager.Query.GetOneValueForAttr(_countryAttr);

                if (country == "Canada" || country == null)
                {
                    e.ListItems.Add("British Columbia", "BC");
                    e.ListItems.Add("Quebec", "Quebec");
                }

                if (country == "USA" || country == null)
                {
                    e.ListItems.Add("California", "CA");
                    e.ListItems.Add("Colorado", "CO");
                    e.ListItems.Add("Oregon", "OR");
                    e.ListItems.Add("Washington", "WA");
                }
            }
        }
Beispiel #11
0
        private void OnChannelDescribeCore(object sender, ListRequestEventArgs <v11.Protocol.ChannelStreaming.ChannelDescribe, v11.Datatypes.ChannelData.ChannelMetadataRecord> args)
        {
            var handler   = (v11.Protocol.ChannelStreaming.IChannelStreamingProducer)sender;
            var sessionId = GetSessionId(handler);

            if (handler.Capabilities.SimpleStreamer ?? false)
            {
                args.FinalError = handler.ErrorInfo().RequestDenied();
                return;
            }
            if (!Store.HasChannelSubscription(sessionId))
            {
                args.FinalError = handler.ErrorInfo().InvalidState("Start must be sent before ChannelDescribe.");
            }

            var allAddedChannels = new List <MockObject>();

            foreach (var subscription in args.Request.Body.GetSubscriptions(sessionId)) // Register metadata subscriptions
            {
                var subscriptionInfo = new MockSubscriptionInfo(subscription);
                if (Store.HasChannelSubscriptionScope(sessionId, subscriptionInfo))
                {
                    continue;
                }

                IList <MockObject> addedChannels;
                if (Store.AddChannelSubscriptionChannelScope(sessionId, subscriptionInfo, out addedChannels))
                {
                    allAddedChannels.AddRange(addedChannels);
                }
                else
                {
                    args.ErrorMap[subscriptionInfo.RequestUuid.ToString()] = handler.ErrorInfo().RequestDenied($"URI: {subscription.Uri}");
                }
            }
            args.Responses = allAddedChannels
                             .Where(o => o is IMockGrowingObject)
                             .Select(o => ((IMockGrowingObject)o).ChannelMetadataRecord11(Store.GetChannelId(sessionId, o)))
                             .ToList();
        }
Beispiel #12
0
        private void OnGetResourcesCore(object sender, ListRequestEventArgs <v11.Protocol.Discovery.GetResources, v11.Datatypes.Object.Resource> args)
        {
            var handler   = (v11.Protocol.Discovery.IDiscoveryStore)sender;
            var resources = Enumerable.Empty <v11.Datatypes.Object.Resource>();

            var uri = new EtpUri(args.Request.Body.Uri);

            if (!uri.IsEtp11)
            {
                args.FinalError = handler.ErrorInfo().InvalidUri(uri);
            }
            else if (uri.IsRootUri && Store.Dataspaces.Count > 1) // List dataspaces
            {
                resources = Store.Dataspaces
                            .Select(d => d.Resource11);
            }
            else if (uri.IsDataspaceUri) // List family versions
            {
                resources = Store.GetFamilies(EtpVersion.v11, uri)
                            .Select(f => f.Resource11);
            }
            else if (uri.IsFolderUri) // List data objects in folder
            {
                // Work around for cross-ML ETP 1.1 URIs:
                var dataType = MockStore.TryGetCorrectedDataObjectType(uri);
                resources = Store.GetObjects(EtpVersion.v11, new MockGraphContext(uri.Parent, dataType))
                            .Select(o => o.Resource11(true));
            }
            else if (uri.IsDataRootUri || uri.IsObjectUri) // List types of data objects available
            {
                resources = Store.GetSupportedTypes(EtpVersion.v11, new MockGraphContext(uri, true, false), true)
                            .Select(st => st.Resource11);
            }
            else
            {
                args.FinalError = handler.ErrorInfo().InvalidUri(uri);
            }

            args.Responses.AddRange(resources);
        }
Beispiel #13
0
        private void OnGetRangesCore(object sender, ListRequestEventArgs <v12.Protocol.ChannelSubscribe.GetRanges, v12.Datatypes.ChannelData.DataItem> args)
        {
            var handler   = (v12.Protocol.ChannelSubscribe.IChannelSubscribeStore)sender;
            var sessionId = GetSessionId(handler);

            HashSet <long> startedChannels, stoppedChannels, closedChannels, invalidChannels;

            if (!Store.ValidateChannelIds(sessionId, args.Request.Body.ChannelRanges.SelectMany(cr => cr.ChannelIds), out startedChannels, out stoppedChannels, out closedChannels, out invalidChannels))
            {
                args.FinalError = handler.ErrorInfo().RequestDenied();
                return;
            }
            if (invalidChannels.Count > 0)
            {
                args.FinalError = handler.ErrorInfo().RequestDenied($"Channel {invalidChannels.First()} is not available.");
                return;
            }
            if (closedChannels.Count > 0)
            {
                args.FinalError = handler.ErrorInfo().RequestDenied($"Channel {closedChannels.First()} is not available.");
                return;
            }

            foreach (var invalidId in invalidChannels.Concat(closedChannels))
            {
                args.ErrorMap[invalidId.ToString()] = handler.ErrorInfo().InvalidState($"Channel {invalidId} is not available.");
            }
            if (args.ErrorMap.Count > 0)
            {
                return;
            }

            var queries = args.Request.Body.ChannelRanges.SelectMany(cr => cr.ChannelIds.Select(id => new MockRangeQuery(cr, id)));

            args.Responses = Store.GetChannelDataRanges(sessionId, queries)
                             .Select(di => di.DataItem12).ToList();
        }
Beispiel #14
0
        private void OnGetSupportedTypesCore(object sender, ListRequestEventArgs <v12.Protocol.SupportedTypes.GetSupportedTypes, v12.Datatypes.Object.SupportedType> args)
        {
            var handler        = (v12.Protocol.SupportedTypes.ISupportedTypesStore)sender;
            var supportedTypes = Enumerable.Empty <v12.Datatypes.Object.SupportedType>();

            var uri = new EtpUri(args.Request.Body.Uri);

            if (!uri.IsEtp12)
            {
                args.FinalError = handler.ErrorInfo().InvalidUri(uri);
            }
            else if (uri.IsDataRootUri || uri.IsObjectUri) // List types of data objects available
            {
                supportedTypes = Store.GetSupportedTypes(EtpVersion.v12, new MockGraphContext(args.Request.Body), args.Request.Body.ReturnEmptyTypes)
                                 .Where(st => handler.Session.SessionSupportedDataObjects.IsSupported(st.DataObjectType))
                                 .Select(st => st.SupportedType12);
            }
            else
            {
                args.FinalError = handler.ErrorInfo().InvalidUri(uri);
            }

            args.Responses.AddRange(supportedTypes);
        }
Beispiel #15
0
 /// <summary>
 /// Handles the GrowingObjectGetRange message from a customer.
 /// </summary>
 /// <param name="args">The <see cref="ListRequestEventArgs{GrowingObjectGetRange, ObjectFragment}"/> instance containing the event data.</param>
 protected virtual void HandleGrowingObjectGetRange(ListRequestEventArgs <GrowingObjectGetRange, ObjectFragment> args)
 {
 }
Beispiel #16
0
 /// <summary>
 /// Handles the ChannelRangeRequest message from a customer.
 /// </summary>
 /// <param name="args">The <see cref="ListRequestEventArgs{ChannelRangeRequest, DataItem}"/> instance containing the event data.</param>
 protected virtual void HandleChannelRangeRequest(ListRequestEventArgs <ChannelRangeRequest, DataItem> args)
 {
 }
Beispiel #17
0
 /// <summary>
 /// Handles the GetDataspaces message from a customer.
 /// </summary>
 /// <param name="args">The <see cref="ListRequestEventArgs{GetDataspaces, Datatypes.Object.Dataspace}"/> instance containing the event data.</param>
 protected virtual void HandleGetDataspaces(ListRequestEventArgs <GetDataspaces, Datatypes.Object.Dataspace> args)
 {
 }
Beispiel #18
0
 /// <summary>
 /// Handles the ChannelDescribe message from a consumer.
 /// </summary>
 /// <param name="args">The <see cref="ListRequestEventArgs{ChannelDescribe, ChannelMetadataRecord}"/> instance containing the event data.</param>
 protected virtual void HandleChannelDescribe(ListRequestEventArgs <ChannelDescribe, ChannelMetadataRecord> args)
 {
 }
Beispiel #19
0
 /// <summary>
 /// Handles the GetRanges message from a customer.
 /// </summary>
 /// <param name="args">The <see cref="ListRequestEventArgs{GetRanges, DataItem}"/> instance containing the event data.</param>
 protected virtual void HandleGetRanges(ListRequestEventArgs <GetRanges, DataItem> args)
 {
 }
Beispiel #20
0
 /// <summary>
 /// Handles the GetResources message from a customer.
 /// </summary>
 /// <param name="args">The <see cref="ListRequestEventArgs{GetResources, Resource}"/> instance containing the event data.</param>
 protected virtual void HandleGetResources(ListRequestEventArgs <GetResources, Resource> args)
 {
 }
Beispiel #21
0
 private void OnGetDataspacesCore(object sender, ListRequestEventArgs <v12.Protocol.Dataspace.GetDataspaces, v12.Datatypes.Object.Dataspace> args)
 {
     args.Responses.AddRange(Store.Dataspaces.Select(d => d.Dataspace12));
 }
Beispiel #22
0
 /// <summary>
 /// Handles the GetSupportedTypes message from a customer.
 /// </summary>
 /// <param name="args">The <see cref="ListRequestEventArgs{GetSupportedTypes, SupportedType}"/> instance containing the event data.</param>
 protected virtual void HandleGetSupportedTypes(ListRequestEventArgs <GetSupportedTypes, SupportedType> args)
 {
 }