프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / DownloadManagerTest / Program.cs @ master

이력 | 보기 | 이력해설 | 다운로드 (5.45 KB)

1
using IIpc;
2
using System;
3
using System.Collections.Generic;
4
using System.Diagnostics;
5
using System.IO;
6
using System.Linq;
7
using System.ServiceModel;
8
using System.Text;
9
using System.Threading.Tasks;
10

    
11
namespace DownloadManagerTest
12
{
13
    class Program
14
    {
15
       static  MarkusService.ServiceDeepViewClient Client;
16

    
17
        static void Main(string[] args)
18
        {
19
            string downloadmanagerPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Plugin","DownloadManager.exe");
20

    
21
            if (!File.Exists(downloadmanagerPath))
22
            {
23
                Console.WriteLine("DownloadManager.exe Not Found");
24
            }
25
            else
26
            {
27
               var sBaseServiceURL = CommonLib.Common.GetConfigString("BaseClientAddress", "URL", "", false);
28

    
29
                var _EndPoint = new EndpointAddress(string.Format("{0}/ServiceDeepView.svc", sBaseServiceURL));
30
                Client = new MarkusService.ServiceDeepViewClient(GetBinding(), _EndPoint);
31

    
32
                Console.WriteLine("Connection Service :" + _EndPoint.Uri);
33

    
34
                string _projectNo = null;
35
                string _documentId = null;
36
                int _testLoop = 1;
37

    
38
                projectIn:
39
                Console.Write("Input Project No : ");
40
                _projectNo = Console.ReadLine();
41

    
42
                if(string.IsNullOrWhiteSpace(_projectNo))
43
                {
44
                    goto projectIn;
45
                }
46

    
47
                DocumentIDIn:
48
                Console.Write("Input Document Id : ");
49
                _documentId = Console.ReadLine();
50

    
51
                if (string.IsNullOrWhiteSpace(_documentId))
52
                {
53
                    goto DocumentIDIn;
54
                }
55

    
56
                Console.Write("Test Loop Count(default 1) : ");
57
                
58
                var strLoop = Console.ReadLine();
59
                int.TryParse(strLoop, out _testLoop);
60
                
61

    
62
                var items = Client.GetDocInfo(new MarkusService.KCOM_BasicParam { projectNo = _projectNo, documentID = _documentId });
63

    
64
                if (items != null)
65
                {
66
                    #region Page Storage Test 
67

    
68
                    string tempStoragePath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "MARKUS", System.IO.Path.GetRandomFileName());
69

    
70
                    Directory.CreateDirectory(tempStoragePath);
71

    
72
                    OpenFolder(tempStoragePath);
73

    
74
                    string sFolder = _documentId.All(char.IsDigit) ? (Convert.ToUInt32(_documentId) / 100).ToString() : (_documentId.Length >= 5 ? _documentId.Substring(0, 5) : _documentId);
75
                    var MainUrl = string.Format(CommonLib.Common.GetConfigString("mainServerImageWebPath", "URL", "", false).Replace("png", "jpg"), _projectNo, sFolder, _documentId, "{PageNo}");
76

    
77
                    KCOM.PageManager.PageStorage PageStorage = new KCOM.PageManager.PageStorage(MainUrl.Replace("jpg", "png"), tempStoragePath, "png", items.PAGE_COUNT);
78

    
79
                    Random rd = new Random();
80

    
81
                    for (int j = 0; j < _testLoop; j++)
82
                    {
83
                        List<int> getPageList = Enumerable.Range(1, items.PAGE_COUNT).ToList<int>();
84

    
85
                        for (int i = 0; i < items.PAGE_COUNT; i++)
86
                        {
87
                            int rdIndex = rd.Next(0, getPageList.Count);
88
                         
89
                            var pageNo = getPageList[rdIndex];
90

    
91
                            var getPage = PageStorage.GetPageUriAsync(null, pageNo).ConfigureAwait(false);
92

    
93
                            getPageList.RemoveAt(rdIndex);
94

    
95
                            Console.WriteLine(getPage.GetAwaiter().GetResult());
96
                        }
97
                    }
98

    
99
                    Console.WriteLine("Page Storage Test OK.");
100

    
101
                    #endregion
102

    
103
                    #region DownloadManager Test
104

    
105
                    string endpoint = KCOM.Common.Commons.shortGuid() + "Thumbnail";
106
                    IIpc.WcfServer wcfServer = new IIpc.WcfServer(endpoint);
107
                    wcfServer.IpcThumbnailReceived += WcfServer_IpcThumbnailReceived;
108
                    wcfServer.Start();
109

    
110
                    KCOM.DownloadProcess.ThumbnailDownloader(endpoint,true, MainUrl, tempStoragePath, "jpg", items.PAGE_COUNT);
111
                    #endregion
112

    
113
                }
114
                else
115
                {
116
                    Console.WriteLine("Item null");
117
                    
118
                }
119

    
120
    
121
            }
122
            Console.ReadKey();
123
        }
124

    
125
        private static void WcfServer_IpcThumbnailReceived(object sender, IpcThumbnailEventArgs e)
126
        {
127
            Console.WriteLine("Thumbnail : " +  new Uri(e.Path, UriKind.Absolute).ToString());
128
        }
129

    
130
        private static void OpenFolder(string folder)
131
        {
132
            Process.Start("explorer.exe", folder);
133
        }
134

    
135
        private static BasicHttpBinding GetBinding()
136
        {
137
            var _binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
138
            _binding.MaxBufferSize = 2147483647;
139
            _binding.MaxReceivedMessageSize = 2147483647;
140
            _binding.OpenTimeout = new TimeSpan(0, 1, 0);
141
            _binding.ReceiveTimeout = new TimeSpan(0, 10, 0);
142
            _binding.CloseTimeout = new TimeSpan(0, 5, 0);
143
            _binding.SendTimeout = new TimeSpan(0, 5, 0);
144
            _binding.TextEncoding = System.Text.Encoding.UTF8;
145
            _binding.TransferMode = TransferMode.Buffered;
146

    
147
            return _binding;
148
        }
149
    }
150
}
클립보드 이미지 추가 (최대 크기: 500 MB)