// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file was auto-generated by the vanadium vdl tool.
var vdl = require('vanadium').vdl;






module.exports = {};



// Types:
var _type1 = new vdl.Type();
_type1.kind = vdl.kind.LIST;
_type1.name = "";
_type1.elem = vdl.types.BYTE;
_type1.freeze();




// Consts:



// Errors:



// Services:

  
    
function MediaSharing(){}
module.exports.MediaSharing = MediaSharing;

    
      
MediaSharing.prototype.displayUrl = function(ctx, serverCall, url) {
  throw new Error('Method DisplayUrl not implemented');
};
    
      
MediaSharing.prototype.displayBytes = function(ctx, serverCall, mediaType) {
  throw new Error('Method DisplayBytes not implemented');
};
     

    
MediaSharing.prototype._serviceDescription = {
  name: 'MediaSharing',
  pkgPath: 'v.io/x/media_sharing',
  doc: "",
  embeds: [],
  methods: [
    
      
    {
    name: 'DisplayUrl',
    doc: "// DisplayURL will cause the server to display whatever media is at\n// the given URL.  The server will rely on the ContentType response\n// header it gets when fetching the url to decide how to display\n// the media.",
    inArgs: [{
      name: 'url',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    outArgs: [],
    inStream: null,
    outStream: null,
    tags: []
  },
    
      
    {
    name: 'DisplayBytes',
    doc: "// DisplayBytes will cause the server to display whatever media is\n// sent in the stream.  In the case of audio or movie media, the\n// media should be played while the data is streaming.  The mediaType\n// can be used by the server to decide how to display the media.",
    inArgs: [{
      name: 'mediaType',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    outArgs: [],
    inStream: {
      name: '',
      doc: '',
      type: _type1
    },
    outStream: null,
    tags: []
  },
     
  ]
};

   
 


