Session: add vfunc to check auth retry capability

The spice session implementation can retry authentication on its own,
whereas the vnc session needs to tear down the session and re-connect in
order to retry a failed authentication. Add API to determine this so
that we can clean up some code related to authentication failures.
This commit is contained in:
Jonathon Jongsma 2015-06-18 13:55:40 -05:00
parent bac799c6e9
commit 5c0ed8a99f
3 changed files with 20 additions and 0 deletions

View File

@ -165,6 +165,12 @@ virt_viewer_session_spice_can_share_folder(VirtViewerSession *session)
return spice_session_has_channel_type(self->priv->session, SPICE_CHANNEL_WEBDAV);
}
static gboolean
virt_viewer_session_spice_can_retry_auth(VirtViewerSession *session G_GNUC_UNUSED)
{
return TRUE;
}
static void
virt_viewer_session_spice_class_init(VirtViewerSessionSpiceClass *klass)
{
@ -186,6 +192,7 @@ virt_viewer_session_spice_class_init(VirtViewerSessionSpiceClass *klass)
dclass->mime_type = virt_viewer_session_spice_mime_type;
dclass->apply_monitor_geometry = virt_viewer_session_spice_apply_monitor_geometry;
dclass->can_share_folder = virt_viewer_session_spice_can_share_folder;
dclass->can_retry_auth = virt_viewer_session_spice_can_retry_auth;
g_type_class_add_private(klass, sizeof(VirtViewerSessionSpicePrivate));

View File

@ -678,6 +678,17 @@ gboolean virt_viewer_session_can_share_folder(VirtViewerSession *self)
return klass->can_share_folder ? klass->can_share_folder(self) : FALSE;
}
gboolean virt_viewer_session_can_retry_auth(VirtViewerSession *self)
{
VirtViewerSessionClass *klass;
g_return_val_if_fail(VIRT_VIEWER_IS_SESSION(self), FALSE);
klass = VIRT_VIEWER_SESSION_GET_CLASS(self);
return klass->can_retry_auth ? klass->can_retry_auth(self) : FALSE;
}
/*
* Local variables:
* c-indent-level: 4

View File

@ -96,6 +96,7 @@ struct _VirtViewerSessionClass {
void (*session_cancelled)(VirtViewerSession *session);
void (*apply_monitor_geometry)(VirtViewerSession *session, GdkRectangle* monitors, guint nmonitors);
gboolean (*can_share_folder)(VirtViewerSession *session);
gboolean (*can_retry_auth)(VirtViewerSession *session);
};
GType virt_viewer_session_get_type(void);
@ -132,6 +133,7 @@ gchar* virt_viewer_session_get_uri(VirtViewerSession *self);
void virt_viewer_session_set_file(VirtViewerSession *self, VirtViewerFile *file);
VirtViewerFile* virt_viewer_session_get_file(VirtViewerSession *self);
gboolean virt_viewer_session_can_share_folder(VirtViewerSession *self);
gboolean virt_viewer_session_can_retry_auth(VirtViewerSession *self);
G_END_DECLS