jingle-filetransfer/filetransfer.h
author Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
Mon, 16 Aug 2010 23:36:49 +0200
changeset 138 dde8eaf7ff2c
parent 133 361d8577ebd1
permissions -rw-r--r--
More docs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     1
#ifndef __JINGLEFT_H__
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     2
#define __JINGLEFT_H__ 1
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
     3
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
     4
/**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
     5
 * \file filetransfer.h
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
     6
 * \brief The main file of app-module to the file transfer XEP 234
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
     7
 * \author Nicolas Cornu
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
     8
 * \version 0.1
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
     9
 */
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    10
 
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    11
#define NS_JINGLE_APP_FT      "urn:xmpp:jingle:apps:file-transfer:1"
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    12
#define NS_JINGLE_APP_FT_INFO "urn:xmpp:jingle:apps:file-transfer:info:1"
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    13
#define NS_SI_FT              "http://jabber.org/protocol/si/profile/file-transfer"
123
58bd57666ef9 Add a end function to transport
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 102
diff changeset
    14
#define JINGLE_FT_SIZE_READ 2048
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    15
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    16
/**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    17
 * \enum JingleFTType
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    18
 * \brief type of the content
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    19
 */
71
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    20
typedef enum {
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    21
  JINGLE_FT_OFFER,
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    22
  JINGLE_FT_REQUEST,
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    23
} JingleFTType;
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    24
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    25
/**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    26
 * \enum JingleFTDirection
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    27
 * \brief Direction of the file
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    28
 */
131
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
    29
typedef enum {
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    30
  JINGLE_FT_INCOMING, /*!< We download the file */
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    31
  JINGLE_FT_OUTGOING /*!< We upload the file */
131
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
    32
} JingleFTDirection;
133
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 131
diff changeset
    33
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    34
/**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    35
 * \enum JingleFTState
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    36
 * \brief state of the file
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    37
 */
133
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 131
diff changeset
    38
typedef enum {
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    39
  JINGLE_FT_PENDING, /*!< The file isn't yet accepted by the both parts */
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    40
  JINGLE_FT_STARTING, /*!< The file is transfering */
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    41
  JINGLE_FT_ENDING, /*!< The file has been transfered */
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    42
  JINGLE_FT_REJECT, /*!< The transfer has been refused */
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    43
  JINGLE_FT_ERROR /*!< And error occured during the transfer */
133
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 131
diff changeset
    44
} JingleFTState;
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 131
diff changeset
    45
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    46
/**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    47
 * \struct JingleFT
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    48
 * \brief represent the file transfer himself
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    49
 */
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    50
typedef struct {
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    51
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    52
   * the last modification of the file, optional 
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    53
   */
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    54
  time_t date;
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    55
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    56
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    57
   * MD5 hash of the file, optional 
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    58
   */
53
64a47491c068 Add a function to handle incoming data in the filetransfert module.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 49
diff changeset
    59
  gchar *hash;
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    60
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    61
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    62
   * the name of the file that the sender wishes to send
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    63
   */
53
64a47491c068 Add a function to handle incoming data in the filetransfert module.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 49
diff changeset
    64
  gchar *name;
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
    65
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    66
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    67
   * the size, in bytes, of the data to be sent 
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    68
   */
88
8b12ebd75c1a Change the size to an guint64 and use the G_GUINT64_FORMAT.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 71
diff changeset
    69
  guint64 size;
53
64a47491c068 Add a function to handle incoming data in the filetransfert module.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 49
diff changeset
    70
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    71
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    72
   * Data already send/receive 
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    73
   */
127
02dde03e219b remove xmlns() in transports
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 123
diff changeset
    74
  guint64 transmit;
02dde03e219b remove xmlns() in transports
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 123
diff changeset
    75
  
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    76
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    77
   * descriptor to the output file
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    78
   */
53
64a47491c068 Add a function to handle incoming data in the filetransfert module.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 49
diff changeset
    79
  GIOChannel *outfile;
71
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    80
  
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    81
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    82
   * Is it an offer or a request ?
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    83
   */
71
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    84
  JingleFTType type;
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    85
  
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    86
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    87
   * Is it if the file is incoming or outgoing
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    88
   */
131
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
    89
  JingleFTDirection dir;
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
    90
  
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    91
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    92
   * The state of the file (PENDING, STARTING, ...) 
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    93
   */
133
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 131
diff changeset
    94
  JingleFTState state;
361d8577ebd1 Change the way IBB work
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 131
diff changeset
    95
  
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    96
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    97
   * A little description of the transfer
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
    98
   */
71
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
    99
  gchar *desc;
53ee5d729367 Handle JFT
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 53
diff changeset
   100
  
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   101
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   102
   * Where we compute the hash
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   103
   */
102
ec430b98c115 send hash
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 88
diff changeset
   104
  GChecksum *md5;
ec430b98c115 send hash
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 88
diff changeset
   105
  
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   106
} JingleFT;
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   107
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   108
/**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   109
 * \struct JingleFTInfo
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   110
 * \brief contain only a link to the gconstpointer
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   111
 *
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   112
 * We keep localy a list of all the files transfered to print infos
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   113
 *
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   114
 */
131
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
   115
typedef struct {
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   116
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   117
   * An index. Not use now, but will in the futur to cancel a transfer.
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   118
   */
131
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
   119
  int index;
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
   120
  
138
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   121
  /**
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   122
   * The link to the JingleFT in the session.
dde8eaf7ff2c More docs
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 133
diff changeset
   123
   */
131
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
   124
  JingleFT *jft;
943c3f938cb4 JFT: add a command info
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents: 127
diff changeset
   125
} JingleFTInfo;
21
147f131382dd Some sessions management code.
Nicolas Cornu <nicolas.cornu@ensi-bourges.fr>
parents:
diff changeset
   126
#endif