summaryrefslogtreecommitdiff
path: root/vendor/github.com/Microsoft/hcsshim/callback.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/Microsoft/hcsshim/callback.go')
-rw-r--r--vendor/github.com/Microsoft/hcsshim/callback.go79
1 files changed, 0 insertions, 79 deletions
diff --git a/vendor/github.com/Microsoft/hcsshim/callback.go b/vendor/github.com/Microsoft/hcsshim/callback.go
deleted file mode 100644
index e8c2b00c8..000000000
--- a/vendor/github.com/Microsoft/hcsshim/callback.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package hcsshim
-
-import (
- "sync"
- "syscall"
-)
-
-var (
- nextCallback uintptr
- callbackMap = map[uintptr]*notifcationWatcherContext{}
- callbackMapLock = sync.RWMutex{}
-
- notificationWatcherCallback = syscall.NewCallback(notificationWatcher)
-
- // Notifications for HCS_SYSTEM handles
- hcsNotificationSystemExited hcsNotification = 0x00000001
- hcsNotificationSystemCreateCompleted hcsNotification = 0x00000002
- hcsNotificationSystemStartCompleted hcsNotification = 0x00000003
- hcsNotificationSystemPauseCompleted hcsNotification = 0x00000004
- hcsNotificationSystemResumeCompleted hcsNotification = 0x00000005
-
- // Notifications for HCS_PROCESS handles
- hcsNotificationProcessExited hcsNotification = 0x00010000
-
- // Common notifications
- hcsNotificationInvalid hcsNotification = 0x00000000
- hcsNotificationServiceDisconnect hcsNotification = 0x01000000
-)
-
-type hcsNotification uint32
-type notificationChannel chan error
-
-type notifcationWatcherContext struct {
- channels notificationChannels
- handle hcsCallback
-}
-
-type notificationChannels map[hcsNotification]notificationChannel
-
-func newChannels() notificationChannels {
- channels := make(notificationChannels)
-
- channels[hcsNotificationSystemExited] = make(notificationChannel, 1)
- channels[hcsNotificationSystemCreateCompleted] = make(notificationChannel, 1)
- channels[hcsNotificationSystemStartCompleted] = make(notificationChannel, 1)
- channels[hcsNotificationSystemPauseCompleted] = make(notificationChannel, 1)
- channels[hcsNotificationSystemResumeCompleted] = make(notificationChannel, 1)
- channels[hcsNotificationProcessExited] = make(notificationChannel, 1)
- channels[hcsNotificationServiceDisconnect] = make(notificationChannel, 1)
- return channels
-}
-func closeChannels(channels notificationChannels) {
- close(channels[hcsNotificationSystemExited])
- close(channels[hcsNotificationSystemCreateCompleted])
- close(channels[hcsNotificationSystemStartCompleted])
- close(channels[hcsNotificationSystemPauseCompleted])
- close(channels[hcsNotificationSystemResumeCompleted])
- close(channels[hcsNotificationProcessExited])
- close(channels[hcsNotificationServiceDisconnect])
-}
-
-func notificationWatcher(notificationType hcsNotification, callbackNumber uintptr, notificationStatus uintptr, notificationData *uint16) uintptr {
- var result error
- if int32(notificationStatus) < 0 {
- result = syscall.Errno(win32FromHresult(notificationStatus))
- }
-
- callbackMapLock.RLock()
- context := callbackMap[callbackNumber]
- callbackMapLock.RUnlock()
-
- if context == nil {
- return 0
- }
-
- context.channels[notificationType] <- result
-
- return 0
-}