protected internal override void OnMessageReceived(ConversationMessage message) { BrowseResponseMessage rep = message as BrowseResponseMessage; if (rep != null) { _rbu.ProcessResponse(rep); } }
protected internal override void OnMessageReceived(ConversationMessage message) { BrowseRequestMessage brMessage = message as BrowseRequestMessage; if (brMessage != null) { if (respondMessage == null || !respondMessage.browserId.Equals(brMessage.browserId)) { #region comment //TODO 如果是安卓又该如何处理?首先需要搞清楚这是在分类浏览,还是在浏览目录,如果是在浏览目录,这个代码可用 //如果是在分类浏览,那么需要去数据库中查询,并返回列表。 //如果安卓做分类浏览,那么分类浏览中有没有子目录的概念?有的图库中有多个相册,是如何处理的?多个相册看起来像是文件夹的概念。 //TODO 新拍摄的图片之类的,没有立即存储到MediaStore,如何处理? //TODO 如果有生成并缓存缩略图,那些缩略图要被MediaStore忽略才行。 //http://blog.csdn.net/yhcelebrite/article/details/11714925 //http://blog.csdn.net/bgc525725278/article/details/8131657 #endregion if (work != null && work.IsBusy) { work.CancelAsync(); } var browseList = Env.Instance.GetBrowseList(brMessage.path); respondMessage = new BrowseResponseMessage(); respondMessage.browserId = brMessage.browserId; respondMessage.Items = browseList; respondMessage.path = brMessage.path; PostMessage(respondMessage); } return; } ThumbnailRequestMessage thumbRequestMessage = message as ThumbnailRequestMessage; if (thumbRequestMessage != null) { work = new BackgroundWorker() { WorkerSupportsCancellation = true }; work.DoWork += Work_DoWork; work.RunWorkerAsync(thumbRequestMessage); return; } }
internal void ProcessResponse(BrowseResponseMessage rep) { if (rep == null || rep.BrowserId != _currentRequest?.BrowserId) { return; } CurrentDir = rep.CurrentDir; foreach (var item in rep.Items) { item.Parent = rep.CurrentDir; } _listResult?.TrySetResult(rep.Items); _listResult = null; }
/// <summary> /// Returns the references that meet the filter criteria for one or more nodes. /// </summary> public BrowseResponseMessage Browse(BrowseMessage request) { try { lock (m_lock) { // verify the session. VerifySession(request.RequestHeader, false); // process each node being browsed. ListOfBrowseResult results = new ListOfBrowseResult(); ListOfDiagnosticInfo diagnosticInfos = new ListOfDiagnosticInfo(); for (int ii = 0; ii < request.NodesToBrowse.Count; ii++) { BrowseResult result = new BrowseResult(); DiagnosticInfo diagnosticInfo = new DiagnosticInfo(); m_nodeManager.Browse( request.NodesToBrowse[ii], result, diagnosticInfo); results.Add(result); diagnosticInfos.Add(diagnosticInfo); } // return the response. BrowseResponseMessage response = new BrowseResponseMessage(); response.ResponseHeader = CreateResponseHeader(request.RequestHeader); response.Results = results; response.DiagnosticInfos = diagnosticInfos; return(response); } } catch (Exception e) { throw CreateSoapFault(request.RequestHeader, e); } }
#pragma warning disable 1998 internal static async Task <BrowseResponseMessage> Response(IItemProviderConversation conv, BrowseRequestMessage browseRequestMessage) #pragma warning restore 1998 { var pathId = browseRequestMessage.DirItemId; var dir = conv.FindItem(pathId) as DirItem; var brpm = new BrowseResponseMessage { Id = conv.Id }; if (dir == null) { brpm.CurrentDir = null; } else { brpm.CurrentDir = dir; brpm.Items = dir.Children; } return(brpm); }
protected internal override void OnMessageReceived(ConversationMessage message) { if (message is BrowseResponseMessage) { BrowseResponseMessage brMessage = (BrowseResponseMessage)message; if (browserId.Equals(brMessage.browserId)) { if (brMessage.Items != null) { breponseMessage = brMessage; itemListReceived?.Invoke(breponseMessage.path, breponseMessage.Items); } } } else if (message is ThumbnailResponseMessage) { ThumbnailResponseMessage trMessage = message as ThumbnailResponseMessage; thumbnailReceived?.Invoke(trMessage.ID, trMessage.Data); } }