summaryrefslogtreecommitdiff
path: root/src/vm/assemblysink.h
blob: 5bdd7d28c324173950f35e393e34ca57671cf459 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//

/*============================================================
**
** Header:  AssemblySink.hpp
**
** Purpose: Asynchronous call back for loading classes
**
**


**
===========================================================*/
#ifndef _ASSEMBLYSINK_H
#define _ASSEMBLYSINK_H

#ifndef FEATURE_FUSION
#error FEATURE_FUSION is not enabled, please do not include assemblysink.h
#endif

class AppDomain;

class AssemblySink : public FusionSink
{
public:
    AssemblySink(AppDomain* pDomain);
    ~AssemblySink() { WRAPPER_NO_CONTRACT; };

    void Reset();

    ULONG STDMETHODCALLTYPE Release(void);

    STDMETHODIMP OnProgress(DWORD dwNotification,
                            HRESULT hrNotification,
                            LPCWSTR szNotification,
                            DWORD dwProgress,
                            DWORD dwProgressMax,
                            LPVOID pvBindInfo,
                            IUnknown* punk);

    virtual HRESULT Wait();

    void RequireCodebaseSecurityCheck() {LIMITED_METHOD_CONTRACT;  m_CheckCodebase = TRUE;}
    BOOL DoCodebaseSecurityCheck() {LIMITED_METHOD_CONTRACT;  return m_CheckCodebase;}
    void SetAssemblySpec(AssemblySpec* pSpec) 
    {
        LIMITED_METHOD_CONTRACT; 
        m_pSpec=pSpec;
    }

private:
    ADID m_Domain; // Which domain (index) do I belong to
    AssemblySpec* m_pSpec;
    BOOL m_CheckCodebase;
};

#endif